在 maven 上准备 release (release:prepare) 时,我评论了一些我不想执行的测试,但它们无论如何都会执行,甚至完全执行从方法中删除 @Test
注释。
注意:请考虑在 Maven 发布期间忽略“跳过测试”选项
构建是在 Eclipse 下执行的,以下环境:
- Apache Maven 3.5.4 外部运行时(不是嵌入在 Eclipse 中的)
- Java JDK 1.8.0_151
- maven-编译器-插件 3.0
- maven-release-plugin 2.5.3
-junit-jupiter-api 5.5.2
-junit-jupiter-engine 5.5.2
通常为了跳过测试,我只评论注释:
//@Test
public void testIwantToSkip() {
assertTrue(true);
}
目前,我发现跳过测试的唯一方法是注释整个方法,但我希望仅注释注释即可跳过它,就像在 Junit 4 上发生的那样。
更新
我也尝试过使用@Disable
注释,不幸的是没有结果。示例:
@Test
@Disabled
public void testAuditMapper() {
....
}
可能的解决方案
经过多次测试并感谢 Kayaman 提示,我发现在 Maven 构建下注释完全被忽略,只有以“test
”开头的方法才会被执行,其他的都会被执行无论注释如何,完全被忽略。例如:
@Test
public void someThing() {
// will NOT be executed....
}
@Disabled
public void testSomeThing() {
// will be executed....
}
最终解决方案
在我的pom的构建部分中,未指定surefire插件,因此生成的pom使用的是该插件的2.12.4版本。通过将其添加到构建部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
一切都按预期进行。感谢@asa 的提示。
最佳答案
尝试使用@Ignore注释。
@Test
@Ignore("optional comment explaning the reason")
public void testIwantToSkip() {
assertTrue(true);
}
关于java - 即使没有注释,Junit 5也会在maven构建中执行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58197153/