当前位置: 首页 > 知识库问答 >
问题:

在JUnit5中,如何在所有测试之前运行代码

诸葛柏
2023-03-14

共有1个答案

章稳
2023-03-14

在JUnit5中,通过创建一个自定义扩展,可以在根测试上下文中注册一个关机钩子,从而实现了这一点。

您的分机如下所示;

import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import static org.junit.jupiter.api.extension.ExtensionContext.Namespace.GLOBAL;

public class YourExtension implements BeforeAllCallback, ExtensionContext.Store.CloseableResource {

    private static boolean started = false;

    @Override
    public void beforeAll(ExtensionContext context) {
        if (!started) {
            started = true;
            // Your "before all tests" startup logic goes here
            // The following line registers a callback hook when the root test context is shut down
            context.getRoot().getStore(GLOBAL).put("any unique name", this);
        }
    }

    @Override
    public void close() {
        // Your "after all tests" logic goes here
    }
}

然后,任何需要至少执行一次的测试类,都可以用:

@ExtendWith({YourExtension.class})
 类似资料: