1

我正面临着我认为是一个常见问题,但我没有找到太多的讨论或现有的工具来解决它。我正在尝试建立一个集成测试系统(已经拥有一套强大的单元测试),它支持 QA 提交输入数据和预期结果(理想情况下以平面文件的形式),可以从标准化的 junit 类运行。

我有一个计划使用 junit@Paramaterized注释在这里推出我自己的。我想象每组数据和结果都有一个控制文件,所有控制文件都放在一个目录中。参数生成器方法将扫描此目录并返回这些文件的列表。然后,测试构造函数将读取此文件并设置输入数据和预期结果。

在我开始写这篇文章之前,我想看看是否已经有工具可以做这种事情,如果没有,就我提出的解决方案获得一些意见。

该应用程序本身是一个纯后端 ETL 类型的工具,它从多个输入文件中以各种格式获取数据,并在数据库中生成结果。我已经有一些静态集成测试,它们使用内存数据库中的 Derby 来检查琐碎输入数据的结果,我计划在这里使用类似的系统来确认数据。预期结果将以(key_value, column, expected value)三元组的形式出现。我想使用 junit 来连接我们的其余测试和结果报告基础设施。

4

2 回答 2

3

看看Spock,一个基于 Groovy 的测试框架,对数据驱动测试有强大的支持。Spock 专为测试 Java(和 Groovy)代码而设计,并且与 JUnit 完全兼容(实际上,Spock 测试是使用 JUnit 运行的)。有关从数据库中提取数据的简单示例测试,请参见此处

一般来说,你的计划对我来说听起来很合理,也可以用普通的 JUnit 和@Parameterized 来实现。Spock 和 Groovy 可以让您的生活更轻松。例如,在 Groovy 中处理文本文件和数据库要比在 Java 中容易得多。

免责声明:我是 Spock 的创造者。

于 2011-02-03T08:09:04.457 回答
0

我自己更喜欢Spock。但我确实看到有一个 JUnitParams 框架,它比直接的 JUnit 参数化测试更具可读性:

https://github.com/Pragmatists/junitparams

可以在以下位置找到一个很好的描述:

https://weblogs.java.net/blog/johnsmart/archive/2014/07/23/data-driven-unit-testing-java

对于其他遇到这个问题的人......

于 2015-03-21T17:46:19.703 回答