我想在Maven项目中使用Junit 5:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
我希望当前禁用测试:
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toMap;
@Disabled
public class DatabaseFeaturesBitStringTest {
....
}
但是它不起作用。测试是在mvn干净构建之后执行的。你能告诉我我遗漏了什么吗?
4条答案
按热度按时间lnxxn5zx1#
这是由于
maven-surefire-plugin
和junit5
之间的不兼容性造成的。您必须为maven-surefire-plugin
定义一个至少为2.22.0
的版本(请参阅codefx blog - junit 5 setup),或者只使用maven3.6.0
。此外,您必须定义jupiter-engine的相依性,就像上面问题的第一行所述:如果您只定义了一个对工件
junit-jupiter-api
的依赖项,这足以让junit 5编译和运行测试,那么@Disabled
注解将被忽略,并且特定的测试也将运行。nvbavucw2#
请检查surefire插件的配置是否依赖junit-jupiter-engine。我不确定,但我认为应该配置它以便从引擎工件加载所有功能,包括禁用的注解。
7hiiyaii3#
@staszko032您描述的POM中的xml代码是2018年的时代,2019年我们对Apache项目采用了JUnit 5提供者,代码https://stackoverflow.com/a/52056043/2758738不再法律的。
JUnit 5和Surefire/Failsafe之间没有不兼容性,因为Apache插件使用JUnit 5平台启动器,它可以完成所有这些功能。Surefire和Failsafe插件不执行您的测试。所以没有什么不兼容的,因为所有的工作都是由JUnit 5引擎完成的,而不是插件的代码。它是POM中定义的真实的的引擎,执行测试。插件只触发执行所有工作的引擎,并将事件发送回插件。
请参阅Apache文档:
https://maven.apache.org/surefire/maven-surefire-plugin/examples/junit-platform.html
https://maven.apache.org/surefire/maven-failsafe-plugin/examples/junit-platform.html
lbsnaicq4#
也许检查木星条件(
@Disabled
在您的情况下)是否通过配置参数junit.jupiter.conditions.deactivate
被停用。有关详细信息,请参阅JUnit5文档:https://junit.org/junit5/docs/current/user-guide/#extensions-conditions-deactivation