Unit testing Surefire不会';t在src/main/java中启动测试
我需要根据maven jar插件文档=> 我这样做是因为,我在测试范围内的另一个项目中使用了测试(helper)类 因此,我创建了我的项目测试,移入测试类,并将surefire配置为指定测试类目录=>Unit testing Surefire不会';t在src/main/java中启动测试,unit-testing,maven,maven-surefire-plugin,Unit Testing,Maven,Maven Surefire Plugin,我需要根据maven jar插件文档=> 我这样做是因为,我在测试范围内的另一个项目中使用了测试(helper)类 因此,我创建了我的项目测试,移入测试类,并将surefire配置为指定测试类目录=> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact
<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>
问题与此相同=>但解决方案(配置surefire maven插件)对我不起作用。由于测试类现在已放置在
src/main/java
中,它们很可能在编译阶段被编译为目标/类
因此,尽管surefire被配置为指示测试源位置是src/main/java
,但它仍然会在目标/测试类中查找测试类,因为这是测试类的默认位置
您可以尝试适当地指定参数,看看它是否有效
另外,我认为您可能误解了maven jar插件文档中的建议。我不相信他们建议将测试源代码移动到src/main/java
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
org.apache.maven.plugins
maven surefire插件
${basedir}/src/main/java/
${project.build.directory}/classes/
结果:
测试运行:20,失败:0,错误:0,跳过:0
您是否正在尝试运行集成测试?此外,为什么要定义testSourceDirectory?为什么要使用反斜杠?正如@khmarbaise提到的,它可能来自反斜杠。我尝试了${basedir}/src/main/java/或src/main/java/但测试运行相同:0,失败:0,错误:0,跳过:0好的,我会尝试。但是maven jar插件的建议很明确:“将源文件从您想要共享的src/test/java从原始项目移动到这个项目的src/main/java。当然,同样类型的移动也会对资源产生影响。”@Antoine。你说得对。我熟悉简易方法
,但从未意识到首选方法
。我也会更新答案。虽然这会起作用,但它绝对不是一个好的配置,因为它没有遵循Maven的方式。源代码应该在src/main/java
中。他们编译的类将位于target/classes
中。测试源应位于src/Test/java
中。他们编译的类将位于目标/测试类中
。这是正确的惯例,这样Surefire将开箱即用。将测试放在与模块源代码相同的目录中是不正确的。我没有将测试类放在同一目录中,而是创建了另一个后缀为“-tests”的项目。这是maven jar插件help=>=>“如何创建包含测试类的jar”=>“首选方式”的推荐,谢谢-这对我帮助很大。我正在开发一组Koan,这些Koan(最初)没有通过单元测试,但在src/main中(已经完成的Koan在src/test目录中),因此我需要能够在src/main中的代码上调用surefire JUnit插件。非常感谢您的帮助。这也适用于maven故障保护插件。这就是我需要这个的原因!谢谢你,安托万!
<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