3

日食 3.7.2

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

我什至尝试使用类似“标准”的 MethodRule,org.junit.rules.TestName但它不能正常工作(测试的名称没有填充到实例中)。在 Eclipse 中运行时,甚至 JavaDoc 中的示例测试也会TestName失败。

有什么诀窍吗?Eclipse 根本不支持 JUnit规则吗?

4

2 回答 2

4

事实证明,有人在相关项目的运行时类路径中包含了一个看似“必需”的 JAR。该 JAR 嵌入了 JUnit 包,其中不应该嵌入其他内容!所以有这个 JAR,命名为类似这样的无害的东西our_runtime_library.jar,其中包含一些特定于应用程序的代码以及一些未知(但旧)版本的 JUnit、Spring 以及谁知道还有什么。在将项目作为单元测试运行时,Eclipse 在该 JAR 中选择 JUnit,而不是它自己的版本(应该是,项目特定的库总是优先),即构建项目的 (Eclipse) 版本。

真是一团糟; 现在开始弄清楚谁应该为此受到 50 次鞭打。

于 2012-05-21T19:05:18.977 回答
2

它应该可以工作,至少在我的 Eclipse 中(在嵌入的 JUnit 4.8 中)。所以你可以显示你的代码。

另外,JavaDoc 说:Note that MethodRule is now deprecated, you should be using TestRule instead.

于 2012-05-22T03:57:58.883 回答