在Eclipse的JUnit运行器中使用JUnit @Rule

时间:2012-05-21 16:54:44

标签: eclipse junit junit4 junit-runner

Eclipse 3.7.2

我刚刚在一些JUnit 4测试中实现了@Rule,但是当我在Eclipse中运行它们时,MethodRule方法没有被调用。这就像Eclipse测试运行器无法识别@Rule实现,并且对使用@Rule注释的字段没有做任何特殊处理。

我甚至尝试使用像org.junit.rules.TestName这样的“标准”MethodRule,但它无法正常工作(测试的名称未填充到实例中)。在Eclipse中运行时,即使是TestName的JavaDoc中的示例测试也会失败。

有诀窍吗? Eclipse根本不支持JUnit Rules吗?

2 个答案:

答案 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.