给定我测试的类,其中有许多嵌套类:
class TestWithManyNested {
@RegisterExtension
static MyExtension extension = new MyExtension();
@Nested
class Nested1 {
@Test
void nested1() {
}
}
@Nested
class Nested2 {
@Test
void nested2() {
}
}
}
这是我的简单扩展:
static class MyExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback {
@Override
public void beforeAll(ExtensionContext extensionContext) throws Exception {
System.out.println("beforeAll");
}
@Override
public void afterAll(ExtensionContext extensionContext) throws Exception {
System.out.println("afterAll");
}
}
如何使用 MyExtension
运行我的 TestWithManyNested
,整个测试只运行 beforeAll
一次
最佳答案
如果您只想为最外层的类执行类级回调,您可以按如下方式重写您的扩展(检查最外层的类是否没有“封闭类”)。
static class MyExtension implements BeforeAllCallback, AfterAllCallback {
@Override
public void beforeAll(ExtensionContext extensionContext) throws Exception {
Class<?> testClass = extensionContext.getRequiredTestClass();
if (testClass.getEnclosingClass() == null) {
System.err.println("beforeAll: " + testClass.getName());
}
}
@Override
public void afterAll(ExtensionContext extensionContext) throws Exception {
Class<?> testClass = extensionContext.getRequiredTestClass();
if (testClass.getEnclosingClass() == null) {
System.err.println("afterAll: " + testClass.getName());
}
}
}
关于java - 如何创建对于内部有许多嵌套类的整个大类仅运行一次 beforeAll 的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52888269/