maven-surefire-plugin - 为 DynamicTest 设置测试名称
问题描述
我正在利用DynamicTest
JUnit 5.3.0-M1 的功能,并且有一个关于测试名称的展示点我似乎无法弄清楚。
我的期望(对或错)是转换displayName
为DynamicTest
我习惯于在测试输出中看到的测试名称。
例如,给定以下TestFactory
方法
public class RequestAcceptTest {
private final Proxy.Location proxy = Proxy.location();
@TestFactory
Collection<DynamicTest> testAllMimeTypes() {
final List<DynamicTest> tests = new ArrayList<>();
for (final Method method : Method.values()) {
for (final MimeType mimeType : MimeType.values()) {
final String displayName = String.format("testAccept%svia%s", mimeType.name(), method);
tests.add(dynamicTest(displayName, () -> {
assertAccept(200, method, mimeType);
}));
}
}
return tests;
}
我希望看到 maven-surefire-plugin 输出的故障在DynamicTest
某处包含 displayName,可能像这样:
[ERROR] Tests run: 6, Failures: 6, Errors: 0, Skipped: 0, Time elapsed: 1,578.898 s <<< FAILURE! - in com.example.prototype.proxy.RequestAcceptTest
[ERROR] testAcceptApplicationJsonviaGET Time elapsed: 0.013 s <<< FAILURE!
org.opentest4j.AssertionFailedError
at com.example.prototype.proxy.RequestAcceptTest.assertAccept(RequestAcceptTest.java:73)
at com.example.prototype.proxy.RequestAcceptTest.lambda$testAllMimeTypes$0(RequestAcceptTest.java:64)
[ERROR] testAcceptApplicationJsonviaPUT Time elapsed: 0.001 s <<< FAILURE!
org.opentest4j.AssertionFailedError
at com.example.prototype.proxy.RequestAcceptTest.assertAccept(RequestAcceptTest.java:73)
at com.example.prototype.proxy.RequestAcceptTest.lambda$testAllMimeTypes$0(RequestAcceptTest.java:64)
[ERROR] testAcceptApplicationJsonviaPOST Time elapsed: 0.001 s <<< FAILURE!
org.opentest4j.AssertionFailedError
at com.example.prototype.proxy.RequestAcceptTest.assertAccept(RequestAcceptTest.java:73)
at com.example.prototype.proxy.RequestAcceptTest.lambda$testAllMimeTypes$0(RequestAcceptTest.java:64)
相反,它是数组索引的。
[ERROR] Tests run: 6, Failures: 6, Errors: 0, Skipped: 0, Time elapsed: 1,578.898 s <<< FAILURE! - in com.example.prototype.proxy.RequestAcceptTest
[ERROR] testAllMimeTypes[1] Time elapsed: 0.013 s <<< FAILURE!
org.opentest4j.AssertionFailedError
at com.example.prototype.proxy.RequestAcceptTest.assertAccept(RequestAcceptTest.java:73)
at com.example.prototype.proxy.RequestAcceptTest.lambda$testAllMimeTypes$0(RequestAcceptTest.java:64)
[ERROR] testAllMimeTypes[2] Time elapsed: 0.001 s <<< FAILURE!
org.opentest4j.AssertionFailedError
at com.example.prototype.proxy.RequestAcceptTest.assertAccept(RequestAcceptTest.java:73)
at com.example.prototype.proxy.RequestAcceptTest.lambda$testAllMimeTypes$0(RequestAcceptTest.java:64)
[ERROR] testAllMimeTypes[3] Time elapsed: 0.001 s <<< FAILURE!
org.opentest4j.AssertionFailedError
at com.example.prototype.proxy.RequestAcceptTest.assertAccept(RequestAcceptTest.java:73)
at com.example.prototype.proxy.RequestAcceptTest.lambda$testAllMimeTypes$0(RequestAcceptTest.java:64)
同样,失败摘要仅显示 lambda 名称,不包含任何对displayName
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR] RequestAcceptTest.lambda$testAllMimeTypes$0:64->assertAccept:73
[ERROR] RequestAcceptTest.lambda$testAllMimeTypes$0:64->assertAccept:73
[ERROR] RequestAcceptTest.lambda$testAllMimeTypes$0:64->assertAccept:73
实际上,我没有 6 个或 10 个测试,而是 10,000 个。我不在乎如何,但我确实需要一些我控制的信息才能显示在测试输出中。
如果我无法与不经意的观察者交流测试是什么,那么该功能很遗憾无法使用,我可能不得不回到字节码生成测试方法。
我也不知道这是 JUnit 问题还是 Maven-Surefire-Plugin 问题。
解决方案
Maven 收回了万无一失的集成,但尚未与 displayname 集成:( 。https://github.com/junit-team/junit5/issues/990
罗曼
推荐阅读
- c++ - 无法更改索引 i 处的向量元素值
- stanford-nlp - Stanford.NLP.NER Nuget:这会将数据传递给服务还是在您的 devbox 上进行本地处理
- python - 删除逗号分隔符后将结果存储在字符串中的 Python 字符串操作
- .net-core - 不寻常的函数定义 - 这里发生了什么
- rust - Rust 进程使用 GitHub 操作失败,退出代码为 101
- javascript - 在反应中下载图像
- android - Android Hilt - 多模块项目转换错误
- excel - 根据当前时间运行宏
- asp.net-core - 具有日期时间比较的 Linq 查询未按预期工作
- python - ValueError:拟合gridsearchcv时参数无效