Eclipse 3.7.2
我刚刚在一些JUnit 4测试中实现了@Rule
,但是当我在Eclipse中运行它们时,MethodRule
方法没有被调用。这就像Eclipse测试运行器无法识别@Rule
实现,并且对使用@Rule
注释的字段没有做任何特殊处理。
我甚至尝试使用像org.junit.rules.TestName
这样的“标准”MethodRule,但它无法正常工作(测试的名称未填充到实例中)。在Eclipse中运行时,即使是TestName
的JavaDoc中的示例测试也会失败。
有诀窍吗? Eclipse根本不支持JUnit Rules吗?
答案 0 :(得分:4)
事实证明,有人在相关项目的运行时类路径中包含了一个看似“必需”的JAR。 JAR嵌入了JUnit软件包,其中包括JUnit软件包!所以有这个JAR,名称像our_runtime_library.jar
一样无害,它有一些特定于应用程序的代码以及一些未知(但旧版本)的JUnit,Spring,以及谁知道还有什么。当将项目作为单元测试运行时,Eclipse正在该JAR中取代JUnit而不是它自己的版本(因为它应该优先使用项目特定的库),即构建项目的(Eclipse)版本。 / p>
多么糟糕;现在要知道谁应该得到50个绑定。
答案 1 :(得分:2)
它应该可以工作,至少在我的Eclipse中(在嵌入式JUnit 4.8中)。 所以你可以展示你的代码。
另外,JavaDoc说:Note that MethodRule is now deprecated, you should be using TestRule instead.