Kid*_*ler 7 eclipse junit junit4 maven maven-surefire-plugin
我的项目中有一个JUnit测试类,它会逐步更新 - 我每隔几周就会添加一次测试,有时会修改测试代码.
令人惊讶的是,当我使用eclipse JUnit Runner 4运行测试类时,它运行我的旧代码(在更新之前)而不是新代码.我可以更改代码,添加或删除测试,但它仍然运行旧代码.
我试图隔离问题并运行我刚刚编写的单个测试,并且在没有任何堆栈跟踪的情况下得到臭名昭着的"Unrooted tests"错误,以便让我知道问题是什么.
我做了一些研究,根据这里的一些其他线程,很多人遇到了关于JUnit 3\JUnit 4兼容性的这个问题,但这不是这里的情况 - 我注释了我的所有测试,@Test并没有扩展TestCase类.
清理/构建所有eclipse项目都无济于事.但是,当我清理安装我的项目时,这个问题确实有效,但这需要花费太多时间.此外,重命名类(eclipse中的Alt + Shift + R)会立即运行新代码,但将其重命名为原始(和有效)名称,会使旧代码再次运行(WTF?)
帮助将不胜感激,10倍
我设法自己解决了这个问题(受到哈拉德贡献的评论的启发)。检查项目的目标目录后,我注意到其中的测试类目录不包含我的测试的二进制文件。然后我注意到我把类放在了 src/test/java 中,并将它们放入了不符合我项目的包结构的包结构中,它们是 src/test/java 的直接子目录。因此,Eclipse 没有将它们放在正确的位置,为它们生成二进制文件的唯一方法是执行 Maven 构建。将所有测试类重构为正确的包结构后,一切都运行良好。