gpt4 book ai didi

java - 如何创建对于内部有许多嵌套类的整个大类仅运行一次 beforeAll 的扩展

转载 作者:行者123 更新时间:2023-12-02 10:41:38 27 4
gpt4 key购买 nike

给定我测试的类,其中有许多嵌套类:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com