Surefire不会在src / main / java中启动测试

时间:2012-01-24 12:36:49

标签: unit-testing maven maven-surefire-plugin

我需要根据maven-jar-plugin documentation =>的这个建议将一些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次测试=&gt;

Results :

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

问题与此问题相同=&gt; Maven does not find JUnit tests to run但解决方案(配置surefire maven插件)对我不起作用。

2 个答案:

答案 0 :(得分:29)

maven surefire插件的良好配置是=&gt;

<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

答案 1 :(得分:1)

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

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

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

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