我尝试运行一个final方法,它在所有测试运行完成后执行一些逻辑。
public class Watcher implements BeforeAllCallback, AfterAllCallback {
public static boolean started = false;
@Override
public void beforeAll(ExtensionContext ec) throws Exception {
if(!started) {
started = true;
// Some logic here and this works fine by using the static bool
System.out.println("Started all");
}
}
@Override
public void afterAll(ExtensionContext ec) throws Exception {
// This runs after each test class I extend on
System.out.println("Finished all");
}
}
// A测试
public class ATest : BaseTest {
@Test
public void A() {
System.out.println("A");
assertTrue(true);
}
}
// B测试
public class BTest : BaseTest {
@Test
public void B() {
System.out.println("B");
assertTrue(true);
}
}
//我的观察器类
@ExtendWith(Watcher.class)
public class BaseTest {
// Base test class stuff
}
它打印为
- 已全部启动
- A级
- 全部完成
- B
- 全部完成
但我想
- 已全部启动
- A级
- B
- 全部完成
1条答案
按热度按时间quhf5bfb1#
如果您想在所有测试之后做一些事情,则需要实现
ExtensionContext.Store.CloseableResource
而不是AfterAllCallback
。如果你需要对每个测试类都执行这个,那么你也可以使用自动扩展注册https://junit.org/junit5/docs/current/user-guide/#extensions-registration-automatic这样你的BaseTest就可以被删除。