单元测试类在eclipse中运行旧版本

时间:2016-04-03 11:05:04

标签: eclipse maven junit junit4 maven-surefire-plugin

我的项目中有一个JUnit测试类,它会逐步更新 - 我每隔几周就会添加一次测试,有时会修改测试代码。

令人惊讶的是,当我使用eclipse JUnit Runner 4运行测试类时,它运行我的旧代码(在更新之前)而不是新代码。我可以更改代码,添加或删除测试,但它仍然运行旧代码。

我试图隔离问题并运行我刚刚编写的单个测试并获得臭名昭着的“Unrooted tests”错误而没有任何堆栈跟踪,以便让我知道问题是什么。

JUnit runner response. test7() is indeed within the compiled test class

我做了一些研究,根据这里的一些其他线程,很多人遇到了关于JUnit 3 \ JUnit 4兼容性的问题,但这不是这里的情况 - 我使用@Test注释我的所有测试我没有扩展TestCase类。

清理/构建所有eclipse项目都无济于事。 但是,当我清理安装我的项目时,这个问题确实可以解决,但这需要花费太多时间。 此外,重命名类(eclipse中的Alt + Shift + R)会立即运行新代码,但将其重命名为原始(和有效)名称,会使旧代码再次运行(WTF?)

帮助将不胜感激, 10X

3 个答案:

答案 0 :(得分:2)

我设法自己解决了这个问题(灵感来自Harlard提供的评论)。 在检查了我的项目的目标目录后,我注意到其中的测试类目录不包含我的测试的二进制文件。 然后我注意到我错误放置了src / test / java中的类,并将它们放在一个不符合我项目的包结构的包结构中,它们是src / test / java的直接子目录。 因此,eclipse没有将它们放在正确的位置,并且为它们生成二进制文件的唯一方法是执行maven构建。 在将所有测试类重构为正确的包结构后,一切都运行良好。

答案 1 :(得分:0)

另一种解决方案是手动删除项目的“目标”文件夹并重建它。这应该可以解决所有这类问题。

答案 2 :(得分:0)

我有同样的问题。这是由于有缺陷的.classpath。删除此.classpath并重新导入项目,生成正确的.classpath并修复环境。