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

Ant*_*ine 23 unit-testing maven maven-surefire-plugin

我需要根据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 =>

<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>
Run Code Online (Sandbox Code Playgroud)

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

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*ine 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
Run Code Online (Sandbox Code Playgroud)

  • 我没有把测试类放在同一个目录中,我创建了以"-tests"为后缀的anoter项目.这是maven-jar-plugin的推荐帮助=> http://maven.apache.org/plugins/maven-jar-plugin/usage.html =>"如何创建一个包含测试类的jar"=>"首选办法" (5认同)
  • 虽然这可行,但它绝不是一个好的配置,因为它不遵循Maven的做事方式.源应该在`src/main/java`中.他们编译的类将在`target/classes`中.测试源应该在`src/test/java`中.他们编译的类将在`target/test-classes`中.这是正确的约定,这样Surefire就可以开箱即用.将测试放在与模块源相同的目录中是不对的. (3认同)