Eclipse 3.7.2
我刚刚在一些 JUnit 4 测试中实现了@Rule
,但是当我在 Eclipse 中运行它们时,没有调用MethodRule
方法。这就像 Eclipse 测试运行器无法识别@Rule
实现,并且不会对用 @Rule
注释的字段执行任何特殊操作。
我什至尝试使用像org.junit.rules.TestName
这样的"标准"方法规则,但它无法正常工作(测试的名称未填充到实例中(。即使是 JavaDoc of TestName
中的示例测试在 Eclipse 中运行时也会失败。
有什么技巧吗?Eclipse 是否根本不支持 JUnit 规则?
事实证明,有人在相关项目的运行时类路径上包含一个看似"必需"的 JAR。该 JAR 嵌入了 JUnit 包,其中包括它不应该嵌入的 JUnit 包!所以有这个 JAR,命名为像 our_runtime_library.jar
这样无害的东西,它有一些特定于应用程序的代码以及一些未知(但旧(版本的 JUnit、Spring,谁知道还有什么。当项目作为单元测试运行时,Eclipse 在该 JAR 中选取 JUnit,而不是它自己的版本(它应该,特定于项目的库始终优先(,即项目构建所依据的 (Eclipse( 版本。
真是一团糟;现在去弄清楚谁应该为此受到50次鞭打。
它应该可以工作,至少在我的Eclipse(在嵌入式JUnit 4.8中(。所以你可以展示你的代码。
另外,JavaDoc 说: Note that MethodRule is now deprecated, you should be using TestRule instead.