我正在利用JUnit 5.3.0-M1的DynamicTest
功能,在测试名称方面我似乎无法弄清一个顶峰。
我的期望(对还是错)是displayName
的{{1}}会转换为我在测试输出中经常看到的测试名称。
例如,给定以下DynamicTest
方法
TestFactory
我希望看到maven-surefire-plugin输出的失败在某处包含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;
}
displayName,也许像这样:
DynamicTest
相反,它是数组索引。
[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)
同样,失败摘要仅显示lambda名称,并且不包含对[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)
的任何引用
displayName
实际上,我没有6或10个测试,但是有10,000个。我不在乎如何,但是我确实需要一些我控制的信息才能显示在测试输出中。
如果我无法与临时观察员交流测试的内容,那么该功能将无法使用,我可能不得不回到生成字节码的测试方法。
我也不知道这是一个JUnit问题还是一个Maven-Surefire-Plugin问题。
答案 0 :(得分:1)
Maven收回了surefire集成,但尚未与displayname集成:(。https://github.com/junit-team/junit5/issues/990
罗曼