Maven运行Eclipse Java项目单元测试报package不存在如何解决
问题1:编译测试时提示业务包不存在
出现该报错是因为两处配置错误:
- 误用了
add-test-source目标:该目标是用来添加测试代码的源码目录,而src/my/package/root/util下是生产业务代码,需要使用add-source目标添加到生产源码路径中 - 源码目录配置过深:Java源码目录要指向包结构的根路径,你的业务代码包名是
my.package.root.util,对应根路径是src,不是到util层的路径,否则编译器无法识别正确的包结构
修正后的build-helper-maven-plugin配置如下:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.2.0</version> <executions> <!-- 添加生产业务源码目录 --> <execution> <id>add-main-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>src</source> </sources> </configuration> </execution> <!-- 自定义测试源码目录的配套配置 --> <execution> <id>add-custom-test-source</id> <phase>generate-test-sources</phase> <goals> <goal>add-test-source</goal> </goals> <configuration> <sources> <source>src/tests</source> </sources> </configuration> </execution> </executions> </plugin>
修改后重新执行mvn clean test即可解决包不存在的编译错误。
问题2:测试类放到自定义路径下提示No tests to run
Maven默认仅扫描src/test/java下的测试类,自定义测试路径需要额外调整配置:
- 先按上述配置用
add-test-source目标把自定义测试根目录src/tests添加为测试源码目录 - 确认测试类命名符合maven-surefire-plugin的默认匹配规则:类名必须符合
*Test.java、*Tests.java、Test*.java三者之一,你使用的StringUtilsTests.java符合规则,无需额外调整 - 如果仍识别不到,可以在surefire配置中显式指定测试根目录,补充配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <skipTests>false</skipTests> <testSourceDirectory>src/tests</testSourceDirectory> </configuration> <executions> <execution> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin>
内容的提问来源于stack exchange,提问作者Frederic
相关产品推荐
相关产品推荐

