JUnit参数化测试具有不同的参数

时间:2014-06-23 20:16:47

标签: java unit-testing junit parameterized-tests

考虑参数化的JUnit测试。 JUnit提供了一种使用静态方法参数化此类测试的方法:

@Parameterized.Parameters
    public static Collection<Object[]> parameters(){
        Object[][] data = new Object[][] { { 1, 11 }, { 2, 22 }, { 3, 33 }, { 4, 44 } };
        return Arrays.asList(data);
    }

但是,这不是我需要的,因为我不知道测试类本身的参数。测试类应该只是一个测试类,可以使用一组参数进行参数化。我不想在类本身内指定这样的参数。考虑我在测试套件中有很多这样的类。

我希望能够从外部代码参数化整个测试套件。即,有一些其他代码使用一组特定的参数来实现套件。套件本身不知道参数化的参数。

例如,我有一个测试套件X,包含测试类ABC。所有这些类在其构造函数中采用例如String和整数作为它们的参数。现在我希望能够在外部(例如,在另一个测试套件中)使用特定字符串X和int s实例化i,以便它实现A {{ 1}}和B在其构造函数中使用Cs

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我正在使用JUnitParams包,这增加了参数化测试的能力。其中一项功能是指定一个提供参数的单独类。看一下链接,他们给出了很多例子,其中一个是使用外部类。