我需要创建一个测试套件,其子套件包含为我检查数据的测试(使用java库)。它的目标是测试库是否正常工作。可以把它想象成病毒扫描程序定义检查。 我有老Junit / Nunit的经验,并期望它很容易。然而,事实证明它不适用于Junit4。
我有以下文件系统布局:
typename(dir)
- file1
- file2
typename(dir)
- file1
- file2
- file3
etc.
我需要运行一个测试每个文件的unittest,并且存在于“typename”测试套件中。我们的想法是处理文件系统,然后动态生成测试用例和套件:
for (File typeNameDir: typenameDirs)
{
TestSuite typenameSuite= new TestSuite();
typenameSuite.setName(typename);
for (File file: filesInThisDir)
{
typenameSuite.addTest(new FileTest(File));
}
}
现在的问题是addTest
期望一个实现Test
的类,但这是一个框架的接口而不可用,因为它需要实现的低级方法。我也尝试扩展TestCase
但这也行不通:我需要手动设置testname,但仍然无法正常运行。也不鼓励扩展junit.framework
类。
所以,看起来我需要使用Parameterized
选项,但这不允许我输入动态生成的数据......那么我该怎么办?
我正在考虑转移到Junit 3。
答案 0 :(得分:0)
您可以查看此post。作者描述了一种在运行时生成测试用例的解决方案。
只是出于好奇,为什么@Parameterized不允许您输入动态生成的数据?它不像这样工作?
@Parameters
public static Collection<Object[]> data() {
List<Object[]> data = new ArrayList<Object[]>();
//load files
for (File file: filesInThisDir) {
data.add(file);
}
return data;
}