24

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

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

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

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <testSourceDirectory>${basedir}\src\main\java\</testSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

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

Results :

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

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

4

2 回答 2

30

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

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>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
于 2012-01-25T08:56:14.230 回答
1

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

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

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

另外,我认为您可能误解了 maven jar 插件文档中的建议。我不相信他们建议将测试源移至src/main/java.

于 2012-01-25T05:53:20.173 回答