您如何从一个班级运行一组测试班级

时间:2019-07-18 18:03:30

标签: java junit

目前,我所有的测试都扩展了另一个带有@BeforeAll标记的类,但我希望在整个测试过程中,此BeforeAll代码总共只运行一次,而不是每个类一次

@BeforeAll
static void createWriter() throws IOException {
    // create file to be writen to
}

@AfterAll
static void finishFile() throws IOException {
    // end file and create high level metrics
}

@Override
public void testSuccess(ExtensionContext extensionContext, Throwable throwable) {
    // override normal test execution finishes
}

2 个答案:

答案 0 :(得分:1)

您必须将测试用例作为测试套件运行。您可以使用测试框架“ TestNG ”来实现此功能。

使用注释@BeforeSuite@AfterSuite,它们对于多个测试类将执行一次。

请检查此link以获得详细信息。

答案 1 :(得分:0)

我不知道有任何内置方法。因此,简单的技术答案是使用一个静态布尔标志,该标志告诉该方法该方法是否已经运行。在执行第一个方法时,该标志将被切换,并阻止进一步执行。

但真正的答案是:您可能走错了兔子洞。让测试类扩展基类更像是一种反模式,并且拥有一个 BeforeAll 方法,该方法太昂贵而无法被重复调用,或者更糟:不等幂会使情况变得更糟。单元测试应该简单易懂(可以自我解释)。继承和“仅运行一次”直接违反了该要求。