关于单元测试:Surefire没有在src / main / java中启动测试

Surefire doesn't launch test in src/main/java

我需要根据maven-jar-plugin documentation => http://maven.apache.org/plugins/maven-jar-plugin/usage.html中的这个建议将一些src / test / java移动到src / main / java

我之所以这样做,是因为我在测试范围内的另一个项目中使用了测试(辅助)类。

所以我创建了my-project-test,移动了测试类,并配置了surefire以指定测试类directory =>

1
2
3
4
5
6
7
8
9
10
11
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            maven-surefire-plugin</artifactId>
            <configuration>
                <testSourceDirectory>${basedir}\src\main\java\</testSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

但是当我启动mvn test时,执行了0次测试=>

1
2
3
Results :

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

问题与此相同=> Maven没有找到JUnit测试运行但是解决方案(配置surefire maven插件)对我不起作用。


maven surefire插件的良好配置是=>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                maven-surefire-plugin</artifactId>
                <configuration>
                    <testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory>
                    <testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

Results :

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


由于测试类现在已放在src/main/java中,因此很可能它们在编译阶段被编译为target/classes

因此,尽管配置了surefire来指示测试源位置是src/main/java,但它仍然会在target/test-classes中查找测试类,因为这是测试类的默认位置。

您可以尝试适当地指定testClassesDirectory参数,看看它是否有效。

另外,我想你可能误解了maven jar插件文档中的建议。 我不相信他们建议将测试源移动到src/main/java