【发布时间】:2016-04-03 11:05:03
【问题描述】:
我的项目中有一个 JUnit 测试类,它会逐步更新 - 我每隔几周添加一次测试,有时会修改测试的代码。
令人惊讶的是,当我使用 eclipse JUnit Runner 4 运行测试类时,它运行的是我的旧代码(更新之前)而不是新代码。我可以更改代码、添加或删除测试,但它仍然运行旧代码。
我试图隔离问题并运行我刚刚编写的单个测试并得到臭名昭著的“无根测试”错误,而没有任何堆栈跟踪来告诉我问题所在。
我做了一些研究,根据这里的一些其他线程,很多人在 JUnit 3 \ JUnit 4 兼容性方面遇到了这个问题,但这里不是这种情况 - 我用 @Test 注释我的所有测试,我不要扩展 TestCase 类。
清理/构建所有 Eclipse 项目没有帮助。 但是,当我 mvn clean install 我的项目时,这个问题确实可以解决,但这需要太多时间。 此外,重命名类(在 Eclipse 中按 Alt+Shift+R)使新代码立即运行,但将其重命名回其原始(有效)名称,使旧代码再次运行(WTF?)
我们将不胜感激, 10 倍
【问题讨论】:
-
如果它运行旧代码,它有旧代码,无论是源代码还是编译。您是否在某个地方有旧代码,甚至可能在恰好位于类路径中的 .jar 中?
-
我想我在某个地方做了,但假设 eclipse 已经编译了它(它确实编译了它),那么 eclipse runner 不应该运行它被指示运行的代码吗?
-
是否有可能您已将 Eclipse 配置为测试运行程序使用
target下的已编译类但 Eclipse 编译器正在输出到不同的文件夹(默认为bin)?这或许可以解释为什么 Maven 构建解决了这个问题。 -
@KidCrippler 您使用的是哪个 Eclipse 版本?这是需要提供的重要信息
-
@A.DiMatteo 当然,我的 Eclipse 版本是 Luna Service Release 1a (4.4.1)
标签: eclipse maven junit junit4 maven-surefire-plugin