代码之家  ›  专栏  ›  技术社区  ›  Finglas

大型单元测试数据

  •  5
  • Finglas  · 技术社区  · 15 年前

    最近,我编写了一套依赖于大量测试数据的单元测试。这个集合包含12个元素,虽然这听起来不像是很多,但它与测试一起使用时。

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

    有什么建议吗?

    6 回复  |  直到 15 年前
        1
  •  11
  •   John Paulett    15 年前

    你的测试是什么样的?

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

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

    • 围绕CVS解析的单元测试
    • 平均值周围的单元测试
    • 围绕答案的显示进行单元测试
    • 小CVS文件,并通过整个过程传递它。

        2
  •  0
  •   Sergi    15 年前

    您不能通过编程从实际生产数据的受控数据集创建项目子集吗?这就是我们要做的,如果数据模型发生了变化,我们会有一些脚本在测试中使用之前将真实数据更新到新模型。

        3
  •  0
  •   Ewan Todd    15 年前
        4
  •  0
  •   ChrisW    15 年前

    方法是大的。这是可怕的管理和使测试套件庞大。

    我有一个单独的程序来生成测试数据。生成的测试数据存储在磁盘上,受版本控制,在单元测试中可用/使用。这个程序的大小/复杂度(例如,它有自己的UI)并不影响单元测试本身的大小/复杂度。

    这是一个“生成数据很复杂”的解决方案(但我不建议将其用于生成千兆字节的测试数据,最好是动态生成)。

        5
  •  0
  •   Doug Knesek    15 年前

    此测试数据集支持多少测试场景?

    理想情况下,您的测试数据应该被分解,以便有单独的测试数据集 脚本否则,您的测试场景会间接地相互依赖,这无论如何都是有害的。

    换句话说,如果多个场景共享同一数据集,则可能会无意中修改一个场景的共享数据集,从而导致数据与另一个场景不兼容。

        6
  •  0
  •   Nilesh Gule    14 年前

    如果您的问题与生成更大的测试数据集有关,那么您可以使用诸如NBuilder之类的库。我们使用NBuilder生成了大量的测试数据。它提供了一个非常流畅的界面,非常易于使用。你可以找到一个同样的小演示 here