java - 如何在junit 5扩展中获得重复计数
问题描述
我尝试编写自己的 JUnit 5 扩展,提供一些关于测试持续时间的简单信息。我也想打印出重复信息,但是如何在扩展中访问这些信息?是否有任何简单的方法可以代替反射或将数字写入和解析为显示名称?
简单的例子:
@ExtendWith(TimingExtension.class)
public class MyTestClass {
@RepeatedTest(value = 5, name = "{currentRepetition}/{totalRepetitions}")
public void myTest(TestInfo testInfo, RepetitionInfo repInfo) {
// do some work here...
}
}
public class TimingExtension implements AfterTestExecutionCallback {
@Override
public void afterTestExecution(ExtensionContext context) throws Exception {
if(context.getRequiredTestMethod().getDeclaredAnnotation(RepeatedTest.class) != null) {
System.out.println("This was test X of Y"); // how to get currentRepetition and totalRepetitions here?
}
}
}
解决方案
不幸的是,扩展中不支持参数注入。这只是一种方式。所以为了进入RepetitionInfo
你的TimingExtension
你必须设置它。
首先你需要使用@RegisterExtension
例如
public class MyTestClass {
@RegisterExtension
TimingExtension timingExt = new TimingExtension();
@RepeatedTest(value = 5, name = "{currentRepetition}/{totalRepetitions}")
public void myTest(TestInfo testInfo, RepetitionInfo repInfo) {
timingExt.setRepetitionInfo(repInfo);
// do some work here...
}
}
public class TimingExtension implements AfterTestExecutionCallback {
private RepetitionInfo repInfo;
@Override
public void afterTestExecution(ExtensionContext context) throws Exception {
if (context.getRequiredTestMethod().getDeclaredAnnotation(RepeatedTest.class) != null && repInfo != null) {
System.out.println(String.format("This was test %d of %d", repInfo.getCurrentRepetition(), repInfo.getTotalRepetitions()))
repInfo = null;
}
}
public void setRepetitionInfo(RepetitionInfo repInfo) {
this.repInfo = repInfo;
}
}
推荐阅读
- sql - 返回某些 IN 条件不匹配的默认值
- docker - Shared builder containers in Docker or Docker Compose
- django - 错误:字符 280 处不存在关系“auth_user”
- php - 查找最近 4 年
- excel - 动态 SumIF - 多种场景
- javascript - 图像未显示在列表中,反应
- angular - Angular 8:POST http://localhost:4200/assets/data/students.json 404(未找到)
- postgresql - PostgreSQL - 比较 ts_vector 字段
- database - 如何使用 axios 从数据库中获取数据
- asp.net-core - 从 ASP.NET Core 项目发布单页