Maven/Surefire finds no tests to run
据我所知,测试文件的位置是正确的。
当我运行"mvn test"时,它会找到四个名为SomethingTest的类(它们位于'test'文件夹中)。
但是,它忽略了任何jUnit测试(jUnit 4,用@Test注释)。
我该如何调试?
编辑 - 这可能与包含的错误版本的jUnit有关。 我在运行"mvn -X"时看到了这个
1 2 3 4 5 | [DEBUG] Retrieving parent-POM: org.codehaus.plexus:plexus:pom:1.0.4 for project: org.codehaus.plexus:plexus-containers:pom:1.0.3 from the repository. [DEBUG] org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:runtime (selected for runtime) [DEBUG] junit:junit:jar:3.8.1:runtime (selected for runtime) [DEBUG] org.codehaus.plexus:plexus-utils:jar:1.0.4:runtime (removed - nearer found: 1.4.1) [DEBUG] classworlds:classworlds:jar:1.1-alpha-2:runtime (selected for runtime) |
尽管我在root pom中的第一个依赖项是在jUnit 4.8.1上,但由于某些原因,包含了jUnit 3.8.1。
编辑2 - 好吧,这似乎不是答案。 Test Classpath包含正确的jUnit(4)和我的测试类。
编辑3 - 我有名为SomethingTester的测试类。 当我把它改成SomethingTest时,它起作用了。 我检查了Surefire的包含模式,实际上它没有配置为捕获Something Tester。卫生署。
也许这就是问题所在:
- https://stackoverflow.com/questions/2021771?sort=newest#sort-top
mvn -X会打印出一堆这些,所以你可以尝试弄清楚它是否来自上面 - 比如没有使用正确的JUnit版本(例如当你从快速入门工件创建时,我认为默认是3.8.1) ,在JUnit之前的类路径中有TestNG。
编辑:我刚刚在一个简单的项目和上面链接中给出的类中尝试了这个,它工作正常。我使用了junit version 4.8,这是我项目中唯一的依赖项。只是为了确认,你用@ org.junit.Test注释测试方法,这些方法中有一些org.junit.Assert.assertXXX语句,对吗?
编辑2:要将junit更改为其他版本,请使用以下命令:
1 2 3 4 5 6 | <dependency> <groupId>junit</groupId> junit</artifactId> <version>4.8</version> <scope>test</scope> </dependency> |
编辑3:你应该在测试类路径中有这样的东西:
1 2 3 4 5 6 7 | [DEBUG] Test Classpath : [DEBUG] /home/icyrock/java/prb/target/test-classes [DEBUG] /home/icyrock/java/prb/target/classes [DEBUG] /home/icyrock/.m2/repository/junit/junit/4.8/junit-4.8.jar [DEBUG] /home/icyrock/.m2/repository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar [DEBUG] /home/icyrock/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar [DEBUG] /home/icyrock/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar |
编辑4:好的,我刚刚创建了一个带有maven quickstart工件的测试项目,在里面添加了两个模块(也是用quickstart工件创建的),添加了源/目标Java版本和junit:junit:4.8仅依赖于父pom。我只将其中一个测试改为JUnit4(另一个是默认的JUnit3,这就是quickstart生成的),来自父文件夹的
这很可能是项目设置问题 - 您是否可以检查项目是否正确连接(即模块指向父项,组/工件/父/子项目的版本是否正确)。我想到的另一件事就是清理你的maven存储库(至少是org / apache / maven),但我怀疑这会有所帮助。
测试一个更简单的项目可能是明智之举。
完成icyrock.com的问题。如果没有编译到目标/测试类的测试类,那么检查你的pom文件并确保包装不是'pom'。