junit - 在所有其他测试之前运行一次特定的 JUnit 测试
问题描述
我正在使用 JUnit 自动进行一些检查。几乎所有都要求用户登录。我已经有一个@Test
执行登录操作的,但是我如何指示 JUnit 在所有其他测试之前只执行一次此登录?
我知道@BeforeClass
可以使用它,但这意味着我需要为每一节课调用它。
解决方案
联队 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");
}
}
}
在此处查看如何打开扩展注册
推荐阅读
- amazon-web-services - Terraform 读取现有资源的详细信息
- php - 如何从laravel中的先前记录中获取数据
- php - 如何在 PHPWord 中对文本框应用无填充
- mysql - 当我在(子查询)中使用“WHERE user_id”时生成语法错误
- angular - 对于大型团队和项目,在 Angular 中分离延迟加载的功能模块的最佳方法是什么?
- firebase - 无法从 Firestore 数据库中获取数据
- javascript - Vue.js 选择多个值
- tensorflow - 批处理、重复和随机播放对 TensorFlow 数据集有什么作用?
- linux - 在bash中捕获没有换行符的程序输出
- android - Firebase 动态链接不跟踪应用安装