设置DynamicTest的测试名称

时间:2018-07-22 20:39:53

标签: maven-surefire-plugin junit5

我正在利用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问题。

1 个答案:

答案 0 :(得分:1)

Maven收回了surefire集成,但尚未与displayname集成:(。https://github.com/junit-team/junit5/issues/990

罗曼