0

我需要创建一个测试套件,其中包含为我检查数据的测试的子套件(使用 java 库)。它的目标是测试图书馆是否工作正常。可以将其想象为病毒扫描程序定义检查。我有使用旧 Junit/Nunit 的经验,并希望它很容易。然而,事实证明它不适用于 Junit4。

我有以下文件系统布局:

typename(dir)
    - file1
    - file2
typename(dir)
    - file1
    - file2
    - file3
etc.

我需要运行一个单元测试来测试每个文件,并使用“typename”测试套件。这个想法是处理文件系统,然后动态生成测试用例和套件:

for (File typeNameDir: typenameDirs)
{
  TestSuite typenameSuite= new TestSuite();
  typenameSuite.setName(typename);
  for (File file: filesInThisDir)
  {
     typenameSuite.addTest(new FileTest(File));
  }
}

现在的问题是addTest期望一个实现的类Test,但这是框架的一个接口并且不可用,因为它需要实现的低级方法。我也尝试过扩展TestCase,但这也不起作用:我需要在那里手动设置测试名称,但它仍然无法正常运行。也不鼓励扩展junit.framework类。

所以,看起来我需要使用Parameterized选项,但这不允许我输入动态生成的数据......那我该怎么办?

我正在考虑转移到 Junit 3。

4

1 回答 1

1

你可以看看这篇文章。作者描述了一种在运行时生成测试用例的解决方案。

只是为了好奇,为什么@Parameterized 不允许您输入动态生成的数据?这样不行吗?

@Parameters
public static Collection<Object[]> data() {
          List<Object[]> data = new ArrayList<Object[]>();
          //load files
          for (File file: filesInThisDir) {
               data.add(file);
          }

          return data;
}
于 2013-09-10T01:31:54.780 回答