目前,我所有的测试都扩展了另一个带有@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
}
答案 0 :(得分:1)
您必须将测试用例作为测试套件运行。您可以使用测试框架“ TestNG ”来实现此功能。
使用注释@BeforeSuite和@AfterSuite,它们对于多个测试类将执行一次。
请检查此link以获得详细信息。
答案 1 :(得分:0)
我不知道有任何内置方法。因此,简单的技术答案是使用一个静态布尔标志,该标志告诉该方法该方法是否已经运行。在执行第一个方法时,该标志将被切换,并阻止进一步执行。
但真正的答案是:您可能走错了兔子洞。让测试类扩展基类更像是一种反模式,并且拥有一个 BeforeAll 方法,该方法太昂贵而无法被重复调用,或者更糟:不等幂会使情况变得更糟。单元测试应该简单易懂(可以自我解释)。继承和“仅运行一次”直接违反了该要求。