eclipse @Disabled在JUnit 5中不起作用

axzmvihb  于 2022-12-12  发布在  Eclipse
关注(0)|答案(4)|浏览(304)

我想在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干净构建之后执行的。你能告诉我我遗漏了什么吗?

lnxxn5zx

lnxxn5zx1#

这是由于maven-surefire-pluginjunit5之间的不兼容性造成的。您必须为maven-surefire-plugin定义一个至少为2.22.0的版本(请参阅codefx blog - junit 5 setup),或者只使用maven 3.6.0。此外,您必须定义jupiter-engine的相依性,就像上面问题的第一行所述:

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

如果您只定义了一个对工件junit-jupiter-api的依赖项,这足以让junit 5编译和运行测试,那么@Disabled注解将被忽略,并且特定的测试也将运行。

nvbavucw

nvbavucw2#

请检查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>
7hiiyaii

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

lbsnaicq

lbsnaicq4#

也许检查木星条件(@Disabled在您的情况下)是否通过配置参数junit.jupiter.conditions.deactivate被停用。
有关详细信息,请参阅JUnit5文档:https://junit.org/junit5/docs/current/user-guide/#extensions-conditions-deactivation

相关问题