具有前后的参数化参数化测试或参数化套件

时间:2015-07-23 14:18:21

标签: java junit4 parameterized

我有一个@Parameterized JUnit测试,一切正常。现在,我尝试创建一个新的测试,对20个数据库配置运行相同的@Parameterized测试。

一直在网上看看,有不同的人要求这个,但似乎并不是一个令人满意的解决方案。我查看了Suite但它无法运行参数化测试,并且它没有任何可以在套件测试之间运行的注释,以便为下一个套件测试做准备。

标准参数化类:

@RunWith(Parameterized.class)
public class MyParameterizedTest {
    // works as normal
}

以下是我正在寻找的一些伪代码:

@RunWith(RunParameterizedLots.class)
@ParameterizedClassToTest(MyParameterizedTest.class)
public class RunParameterizedLotsOfTimes<T> {

    @ListOfTestStuff
    public List<T> getList() {
        return list of T;
    }

    @BeforeRunningMyParameterizedTest
    public void beforePtest(T i) {
       setupDatabaseConfig(i);
    }

    @AfterRunningMyParameterizedTest
    public void afterPtest() {
        teardownDatabaseConfig(i);
    }

}

这些都不是写的我花了两天时间阅读JUnit文档并且似乎没有更接近。发行说明4.12谈论@UseParametersRunnerFactory看起来可能会有所帮助,新的BlockJUnit4ClassRunnerWithParameters也有一些东西,但似乎没有任何关于如何使用它的例子。

我可以创建一个&#34; @RunWith(Parameterized.class)&#34;将1,2,3,4提供给自身的类,然后如何将子参数化测试链接到JUnit子系统,使其看起来很好并提供合理的显示。

我希望你能从我的华夫饼问题中看到我想要做什么我只是不知道从哪里开始,或者其他人是否已经完成了这项工作?

1 个答案:

答案 0 :(得分:0)

开箱即用,无法参数化JUnit测试套件,因为两者都是Runner,您的测试中可能只有一个@RunWith()注释。

为此,我写了一个新的Runner,它将两者的功能结合到ParameterizedSuitehttps://github.com/PeterWippermann/parameterized-suite 好消息是,它还允许您使用@Before@After

但是,我不确定你的问题是否有所不同:你有两个参数吗?你说,你已经有了一个参数化测试,现在你不想针对数据库配置列表运行该测试。这将是你的第二个参数。您想测试这两个参数的所有组合,不是吗?