@Disabled在JUnit5中不起作用

时间:2018-08-28 09:32:16

标签: java eclipse junit5

我想在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 clean build之后执行测试。你能告诉我我所缺少的吗?

3 个答案:

答案 0 :(得分:2)

检查您的surefire插件配置是否具有junit-jupiter-engine依赖性。我不确定,但是我相信应该对其进行配置,以便从引擎工件中加载所有功能,包括“禁用”注释。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven.surefire.plugin.version}</version>
            <dependencies>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-surefire-provider</artifactId>
                    <version>${junit.platform.surefire.provider.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit.version}</version>
                </dependency>
            </dependencies>
        </plugin>

答案 1 :(得分:1)

这是由于maven-surefire-pluginjunit5之间的不兼容引起的。您要么必须为2.22.0定义一个至少包含maven-surefire-plugin的版本(请参阅codefx blog - junit 5 setup),要么只使用maven 3.6.0。 此外,您还必须具有对木星引擎的依赖性,如上面这个问题的第一行所述:

<dependency>
   <groupId>org.junit.jupiter</groupId>
   <artifactId>junit-jupiter-engine</artifactId>
   <version>5.4.0</version>
   <scope>test</scope>
</dependency>

如果仅定义了对工件junit-jupiter-api的依赖关系,这足以使测试编译并使用junit5运行,则@Disabled批注将被静默忽略,并且特定的测试将按以下方式运行好吧。

答案 2 :(得分:0)

@ staszko032 您描述的POM中的xml代码是2018年的时代。在2019年,我们对Apache项目采用了JUnit5提供程序,并且代码https://stackoverflow.com/a/52056043/2758738不再合法。

@Jens Vagts JUnit5和Surefire / Failsafe之间没有不兼容之处,因为Apache插件使用JUnit5平台启动程序来完成所有这些技巧。Surefire和Failsafe插件不会执行测试。因此,没有什么不兼容的,因为所有工作都是由JUnit5引擎而不是插件的代码完成的。它是您的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