java - 在 JUnit 4.11 中结合 @ClassRule 和 @Rule

标签 java junit junit4 junit-rule

在 JUnit 4.10 及更低版本中,可以将规则注释为@Rule 和@ClassRule。这意味着规则在上课之前/之后以及每次测试之前/之后被调用。这样做的一个可能原因是设置一个昂贵的外部资源(通过@ClassRule 调用),然后廉价地重置它(通过@Rule 调用)。

从 JUnit 4.11 开始,@Rule 字段必须是非静态的,@ClassRule 字段必须是静态的,因此上述情况不再可行。

显然有一些解决方法(例如,明确地将 @ClassRule 和 @Rule 职责分离为单独的规则),但必须强制使用两个规则似乎很可惜。我简要地查看了使用@Rule 并推断它是否是第一个/最后一个测试,但我不相信该信息可用(至少,它不直接在描述中可用)。

在 JUnit 4.11 中是否有一种简洁的方式将 @ClassRule 和 @Rule 功能组合到单个规则中?

谢谢, 罗文<​​/p>

最佳答案

从 JUnit 4.12(撰写本文时未发布)开始,可以使用 @Rule@ClassRule 注释单个静态规则。

请注意,它必须是静态的 - 使用 @Rule@ClassRule 注释的非静态规则仍然被认为是无效的(就像任何注释的 @ClassRule 在类级别工作,因此只有作为静态成员才真正有意义)。

the release notesmy pull request如果您有兴趣了解更多细节。

关于java - 在 JUnit 4.11 中结合 @ClassRule 和 @Rule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20767486/

相关文章:

java - 如何从 Java API 在 Google Drive 中添加页眉/页脚?

jakarta-ee - 有没有办法让嵌入式 EJB 容器启动得更快?

android - 仅使用 AndroidJunit4 时日历测试通过

java - Mockito 单元测试 RestTemplate

java - 如何在 Play Framework 2.0 中加载 XML/HTML 资源

java - 将 lambda 作为具有泛型类型的参数传递 - java 8

java - 如何通过JAXB xml解析获取特定元素?

java - Javafx web View 中的 JSException

java - 如何为 Thread 类编写 Junit 测试用例

java - Junit实例创建分别通过方法或类