在 Eclipse 的 JUnit 运行器中使用 JUnit @Rule
-
12-12-2019 - |
题
日食3.7.2
我刚刚实施了一个 @Rule
在一些 JUnit 4 测试中,但是当我在 Eclipse 中运行它们时 MethodRule
方法没有被调用。就像 Eclipse 测试运行程序无法识别 @Rule
实现并且不会对带有注释的字段执行任何特殊操作 @Rule
.
我什至尝试使用“标准”MethodRule,例如 org.junit.rules.TestName
但它无法正常工作(测试的名称未填充到实例中)。甚至 JavaDoc 中的示例测试 TestName
在 Eclipse 中运行时失败。
有什么技巧吗?Eclipse 根本不支持 JUnit 规则?
解决方案
事实证明,有人在相关项目的运行时类路径中包含了一个看似“必需”的 JAR。该 JAR 嵌入了 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.
不隶属于 StackOverflow