unit-testing - 大单元测试数据

标签 unit-testing

最近我写了一套单元测试,它依赖于大量的测试数据。该集合包含十二个元素,虽然这听起来并不多,但与测试一起使用时却如此。

每个元素都需要使用唯一值设置多个属性。使用这种方法的问题是创建这组数据的工厂方法是巨大的。

关于这个问题的最佳做法是什么?我的应用程序实际上是通过文件读取数据,但为了测试,我使用了来自内存存储的模拟数据。

有什么建议吗?

最佳答案

你的测试是什么样的?

您确定您正在编写单元测试而不是代码的多个组件的更高级别的测试吗?纯粹的单元测试应该只调用一个方法,并且该方法希望对其他方法的调用有限(可能通过 mocking )。

通过关注尽可能小的单元,您可以编写代码来测试特定的边缘情况。然而,如果您在更高级别进行测试,您通常必须编写所有类型的边缘情况排列。一旦涵盖了所有最小的单元,就可以编写一些更高级别的集成测试,以确保所有这些单元都正确组装。

例如,如果我有一个应用程序读取股票报价的 CSV 文件并对给定日期的所有报价求平均值,我将编写几个测试:

  • 围绕 CVS 解析的单元测试
  • 围绕日期分组进行单元测试
  • 围绕平均值进行单元测试
  • 围绕答案显示进行单元测试
  • 以及少数可能需要 的集成测试非常小的 CVS 文件并将其传递给整个过程。

  • 如果我对您的单元测试做出假设,我深表歉意,但根据我的经验,我发现人们所说的单元测试通常不是真正的单元测试,而是集成测试(或者您喜欢称呼它们的任何名称,例如功能测试等)。 )。我个人对编写过于宽泛的测试感到非常内疚,现在每次编写测试时,我都必须强制自己记住一次真正测试一个单元。

    关于unit-testing - 大单元测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739289/

    相关文章:

    java - Mockito 单元测试 - 错误放置或误用参数匹配器

    java - 如何为 IO 文件创建 stub 以在 Java 中进行单元测试?

    unit-testing - xcodebuild headless (headless)运行测试?

    c# - 如何在 DDD 命令处理程序中测试逻辑?

    python - 是否可以使用 Django 的固定装置更改现有数据?

    unit-testing - 在 Selenium 中定义自定义操作

    c# - 为使用 IoC.Resolve() 的服务创建单元测试的最佳方法是什么

    c# - 使用固定装置测试 Entity Framework

    Java Mockito JUnit 测试/模拟类,其构造函数包含抽象方法调用

    unit-testing - ng 测试 - 意外 token 'const'