JUnit 4中易于阅读的测试名称

dev*_*ull 2 java junit unit-testing junit4

如何使用JUnit 4指定人类可读的测试名称(在IDE和测试报告中显示)?

理想情况下,通过自动转换实际的测试名称。

Ste*_*ner 6

我认为“可读名称”主要是指带有空格的测试名称。

下划线

对于此问题,我最喜欢的解决方案是使用下划线而不是空格。这是唯一可以与IDE完美配合的解决方案。例如,您可以通过单击鼠标从测试执行面板跳到测试。

@Test
public void the_server_accepts_connections_with_password() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

请查看FakeSftpServerRuleTest,以获取使用此样式的完整测试类。

测试选手

还有其他解决方案,但是所有这些都需要您编写自己的Runner

您可以构建一个支持类似于JUnit Jupiter的@DisplayName批注的Runner

您可以构建一个Runner,将下划线从测试方法的名称转换为用于测试显示名称的空格。

这些解决方案的问题在于,IDE无法再将测试结果与测试方法相关联。

非标准空间

警告:不要这样做!

只是为了完整性。Unicode中各种空格字符,其中一些可以成为Java中方法名称的一部分。您可以使用它们来编写测试名称。您仍然具有适当的IDE支持。不过:不要这样做。代码的读者不会意识到这种魔力而变得绝望。