在 JUnit 4.11 中结合@ClassRule和@Rule
2022-09-02 01:36:23
在 JUnit 4.10 及更低版本中,可以将规则注释为@Rule和@ClassRule。这意味着规则在类之前/之后以及每次测试之前/之后被调用。这样做的一个可能原因是设置一个昂贵的外部资源(通过@ClassRule调用),然后廉价地重置它(通过@Rule调用)。
从 JUnit 4.11 开始,@Rule字段必须是非静态的,@ClassRule字段必须是静态的,因此上述操作不再可能。
显然有解决方法(例如,明确地将@ClassRule和@Rule责任划分为单独的规则),但是必须强制使用两个规则似乎是一种耻辱。我简要地研究了使用@Rule并推断它是否是第一个/最后一个测试,但我不相信信息是可用的(至少,它不是直接在描述上可用的)。
在 JUnit 4.11 中,是否有一种整洁的方式将@ClassRule和@Rule功能组合到单个规则中?
谢谢,罗文