我们的应用程序依赖于许多由另一系统提供的资源。
为确保这些资源的存在,我们目前拥有一个JUnit测试用例(可能更多地是集成测试),它将所有资源的列表作为文本文件,获取每个并跟踪成功/失败。
这是一个非常长的运行测试用例,不太“工具友好”。我们真正希望拥有的是每个资源一个测试方法。
我知道这不是JUnit的本意。但是有没有办法动态生成这些测试方法?
或许可以使用稍微“优雅”一点的方法,而不是编写Perl脚本来生成数百个方法?
非常感谢!
我们的应用程序依赖于许多由另一系统提供的资源。
为确保这些资源的存在,我们目前拥有一个JUnit测试用例(可能更多地是集成测试),它将所有资源的列表作为文本文件,获取每个并跟踪成功/失败。
这是一个非常长的运行测试用例,不太“工具友好”。我们真正希望拥有的是每个资源一个测试方法。
我知道这不是JUnit的本意。但是有没有办法动态生成这些测试方法?
或许可以使用稍微“优雅”一点的方法,而不是编写Perl脚本来生成数百个方法?
非常感谢!
你可能需要看一下参数化测试。这在JUnit 4中更容易实现,但在JUnit 3中也可以实现。请参阅以下问题中的代码:动态测试数量的JUnit测试。
这里是一个示例类:http://github.com/adewale/cq-challenge-markup/blob/b99c098f0b31307c92bd09cb6a324ef2e0753a0b/code/acceptance-tests/AcceptanceTest.java,使用JUnit4的 @Parameterized 注释,动态生成每个资源的一个测试。
您可能需要查看 TestSuite类,并创建自己的实例(而不是让其中一个junit runners运行某个目录中的所有测试),和/或对其进行子类化 - TestSuite有可以编程方式向其添加测试的方法,然后您可以在整个套件内运行所有测试。