是否取消跳过测试的surefire警告(由于@Disabled/@Enabled注释)



禁用带有@Disabled*/@Enabled*注释的测试时,这些测试将按预期跳过,但surefire测试运行程序也会在受影响类的结果行前显示[WARNING]。我的理解是,开发团队应该只看到需要进一步关注的事情的警告,因此我同意对某些测试(即由于未解决的错误而暂时禁用的测试(发出警告可能是一件好事。

现在:我正在编写的测试套件涵盖了特定于不同操作系统环境的代码——例如,有些测试只有在windows环境中运行时才有意义。因此,对此类测试(用@EnabledOnOs(OS.WINDOWS)注释(发出警告是没有意义的,因为它们绝对可以,并且可以跳过(实际上是强制性的(——所以这里根本没有待办事项或问题。

我们如何控制哪些跳过的测试将导致警告(即通过@SuppressWarnings注释或某些安全配置选项(?

没有办法抑制特定测试的警告。

但是,您至少可以减少Maven Surefire插件打印的警告数量。为此,可以使用配置属性printSummary。有关详细信息,请参阅文档。因此,如果您在pom.xml:中添加这样的属性

<properties>
<surefire.printSummary>false</surefire.printSummary>
</properties>

您不会看到每个测试的摘要,而只会在构建结束时看到最终的汇总摘要。

[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ demo ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1                   
[INFO]                                                                       
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

作为条件的替代解决方案,我可以建议您使用标签。

因此,您可以为测试类和/或方法添加"os"标记

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

class TaggingDemo {
@Test
@Tag("windows")
void testingForWidows() {
}
@Test
@Tag("linux")
void testingForLinux() {
}
}

然后,当执行Maven命令来运行测试时,您可以指定可以包含或排除哪些标记。例如:

mvn clean test -Dgroups=!windows

因此,对于从生成中"排除"的测试,您将不会看到任何警告。

[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ demo ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0                   
[INFO]                                                                       
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

最新更新