[英]How to create Extension which runs beforeAll only once for whole big class with many nested classes inside
給定我的測試類,其中包含許多嵌套類:
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");
}
}
我怎樣才能運行我TestWithManyNested
與MyExtension
剛剛運行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());
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.