我在一个测试类中定义了两个规则,但奇怪的是一次只有最后一个被定义的规则起作用。
@Rule public ExpectedException exception = ExpectedException.none();
@Rule public TemporaryFolder folder= new TemporaryFolder();
我真的想不出来如何定义两个或多个规则并将它们分别使用。
我曾遇到同样的问题,我发现在这种情况下您可以使用 RuleChain,像这样:
public TemporaryFolder temp;
public ExpectedException thrown;
@Rule
public TestRule chain =
RuleChain.outerRule(temp = new TemporaryFolder())
.around(thrown = ExpectedException.none());
你可以在这里看到另一个例子,也可以参考RuleChain javadoc。
Rules
和Test
,并且在一个测试中我使用了folder.something()
,而在另一个测试中使用了exception.expect(ArrayIndexOutOfBoundsException.class)
,那么异常规则将不起作用,因为它是先定义的。 - jtkSource