java - 无论测试是否为@Disabled,如何在每个@test 之后运行一段代码?
问题描述
基本上我想在我的范围报告中添加一个“跳过测试”条目。我知道我可以使用@AfterEach,但是我看到 @AfterEach 代码块没有在 Junit5 中为@Disabled Test 执行。
我尝试使用 TestWatcher 接口并覆盖了 testDisabled 方法,如下所示:
package utils;
import java.util.Optional;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.TestWatcher;
public class MyTestWatcher implements TestWatcher {
public static String testStatus;
public static String testCaseName;
@Override
public void testAborted(ExtensionContext Context, Throwable throwable) {
testStatus = "Aborted";
testCaseName = Context.getDisplayName();
System.out.println("Test Aborted: " + Context.getDisplayName());
}
@Override
public void testDisabled(ExtensionContext Context, Optional<String> optional) {
testStatus = "Skipped";
testCaseName = Context.getDisplayName();
System.out.println("Test Skipped: " + Context.getDisplayName());
}
@Override
public void testFailed(ExtensionContext Context, Throwable throwable) {
testStatus = "Failed";
testCaseName = Context.getDisplayName();
System.out.println("Test Failed: " + Context.getDisplayName());
}
@Override
public void testSuccessful(ExtensionContext Context) {
testStatus = "Passed";
testCaseName = Context.getDisplayName();
System.out.println("Test Passed: " + Context.getDisplayName());
}
}
基于上面 testDisabled() 方法中设置的“testStatus”和“testCaseName”变量,我想从我的测试类运行一段代码,在我的范围报告中添加一个条目,说明哪个测试用例是跳过。
解决方案
如果我正确理解了你的问题,你只需要申请TestWatcher
你的测试来解决你的问题。使用JUnit 5,您可以使用@ExtendsWith
annotation。完整的例子是:
@ExtendWith(MyTestWatcher.class)
class MyTest {
@Test
void test() {
System.out.println("inside active test");
}
@Test
@Disabled
void testDisabled() {
System.out.println("inside disabled test");
}
}
带输出:
inside active test
Test Passed: test()
Test Skipped: testDisabled()
使用JUnit 5.4.2测试
推荐阅读
- java - 如何根据被序列化的字段配置杰克逊以使用 JaxbAnnotationIntrospector 或 JacksonAnnotationIntrospector
- java - Bicycle[]::new 的等价物是什么
- python - 计算 2 个数据帧的每个元素之间的 Jaccard 距离
- flutter - 如何使用预设的电子邮件和密码登录 google oauth?
- angular - Twilio LocalVideoTrack 覆盖开始和停止事件
- javascript - 与列表框绑定的下拉列表和与按钮可见性绑定的列表框的项目选择 React
- swift - URL.init?(string: String) 在不应该的时候返回 'nil'
- powershell - 在powershell上递归重命名其他子目录的子目录文件?
- php - 未在 Apache 服务器上指定空白致命错误
- javascript - 使用 Dojo lang.hitch 将参数传递给被调用函数