首页 > 解决方案 > 在所有其他测试之前运行一次特定的 JUnit 测试

问题描述

我正在使用 JUnit 自动进行一些检查。几乎所有都要求用户登录。我已经有一个@Test执行登录操作的,但是我如何指示 JUnit 在所有其他测试之前只执行一次此登录?

我知道@BeforeClass可以使用它,但这意味着我需要为每一节课调用它。

标签: junit

解决方案


联队 4

您可以只用一个测试创建父类。并从中扩展所有类。

private static final AtomicBoolean REQUIRES_LOGIN = new AtomicBoolean(true);

 @Test
 void setup() {
   if (REQUIRES_LOGIN.getAndSet(false)) {
     System.out.println("Doing login here");
   }
 }

六月 5

您可以在以下文件中注册全局扩展名。

META-INF/services/org.junit.jupiter.api.extension.Extension
demo.api.BeforeAllExtension

扩展类:

public class BeforeAllExtension implements BeforeAllCallback {

     private static final AtomicBoolean REQUIRES_LOGIN = new AtomicBoolean(true);

    @Override
    public void beforeAll(ExtensionContext extensionContext) {
        if (REQUIRES_LOGIN.getAndSet(false)) {
            System.out.println("Doing login here");
        }
    }
}

在此处查看如何打开扩展注册


推荐阅读