当前位置: 代码迷 >> java >> 带参数的参数化测试或参数化套件
  详细解决方案

带参数的参数化测试或参数化套件

热度:59   发布时间:2023-08-02 10:56:44.0

我有一个@Parameterized JUnit测试,所有的工作。 现在,我正在尝试创建一个新的测试,该测试针对20个数据库配置运行一次相同的@Parameterized测试。

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

标准参数化类:

@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也包含一些内容,但是似乎没有使用它的任何示例。

我可以创建一个“ @RunWith(Parameterized.class)”类,该类将1,2,3,4馈入自身,但是然后我该如何将子参数化的测试链接到JUnit子系统中,以使其看起来不错并提供合理的显示。

我希望您可以从华夫饼问题中看到我正在尝试做的事情,我只是不知道从哪里开始,或者其他人是否已经完成了这项工作?

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

因此,我编写了一个新的Runner,将两者的功能结合到ParameterizedSuite : : 好消息是,它还使您可以使用@Before@After

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

  相关解决方案