如何使Maven与JUnit完美搭配?

时间:2018-12-17 17:18:56

标签: maven junit maven-3 maven-surefire-plugin junit5

Maven surefire插件仅运行以test开头或结尾的测试。在JUnit中处理它确实很麻烦,原因有两个:

1-我已经必须在所有测试方法中添加@Test,因此必须附加单词test是重复的。

2-在JUnit中,如果要禁用某些测试,只需将其标记为@Disabled,因此,如果使用的是surefire,则还必须重命名测试方法。

是否有任何方法可以确保surefire与JUnit完美配合?这样,仅运行标有@Test的内容并自动忽略@Disabled方法?


目前,我的pom.xml如下所示(仅包括与测试相关的项目以节省空间):

<packaging>jar</packaging>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.3.2</version>
    <scope>test</scope>
</dependency>

<build>
    <pluginManagement>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
        </plugin>
    </pluginManagement>
</build>

1 个答案:

答案 0 :(得分:1)

要在Maven中运行JUnit Jupiter测试,您必须使用junit-jupiter-engine而不是junit-jupiter-api

<dependencies>
    [...]
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.3.2</version>
        <scope>test</scope>
    </dependency>
    [...]
</dependencies>

您可以添加junit-jupiter-api作为补充工件。此外,您至少应使用maven-surefire-plugin 2.22.1 +