Maven默默地找不到要运行的JUnit测试

时间:2019-08-13 13:15:05

标签: maven intellij-idea junit5 maven-surefire-plugin

我已经在IntelliJ中打开了一个新的Java项目,以Maven作为其构建工具,目前有一个类和一个JUnit 5测试类。当我指示IntelliJ单独或一起运行测试时,它可以工作。但是,当我转到终端并点击mvn clean test或在IntelliJ的Maven窗格中执行相同操作时,它将跳过测试。

但是,与the questioner with this similar question不同,我没有收到任何错误消息。找到测试类 并进行编译。我没有他遇到的相同问题(文件命名不正确)。

编辑:Stackoverflow问我为什么这不是this question的重复。这是相同的问题,但他们的解决方案(自2016年起)不再正确。您不再需要添加“提供者”依赖项。

这是我的Maven输出中的相关部分:

[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ markovmodels ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\Users\joe\foo\markovmodels\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ markovmodels ---
[INFO] Surefire report directory: C:\Users\joe\foo\markovmodels\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.648 s
[INFO] Finished at: 2019-08-13T09:02:53-04:00
[INFO] ------------------------------------------------------------------------

我不知道这是否有用,但是我发现没有创建target/surefire-reports目录。

pom.xml中,我有以下两个与测试相关的依赖项:

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

它们是直接从另一个有效的项目中复制过来的。我没有指定Surefire插件的版本,也没有更改任何默认值,因此有效的POM与我的其他项目相同(它使用maven-surefire-plugin版本2.12.4)。测试源文件似乎位于正确的目录中,并且具有正确的命名约定。 我可能会犯什么错误?

当前状态下的代码可以为here on Github

1 个答案:

答案 0 :(得分:1)

maven-surefire-plugin

有问题

maven-surefire-plugin的默认版本出了点问题,我可以通过对其进行升级来修复它。我通过复制JUnit5 sample Maven project on Github的相关部分来解决了这个问题:

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.5.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
        </plugin>
    </plugins>
</build>