Java JUnit中的多个规则

Java JUnit中的多个规则,java,junit4,Java,Junit4,我在一个测试类中定义了两个规则,但奇怪的是,一次只能使用其中一个-最后定义的一个 @Rule public ExpectedException exception = ExpectedException.none(); @Rule public TemporaryFolder folder= new TemporaryFolder(); 我一辈子都不知道如何定义两个或多个规则并分别使用它们我也有同样的问题,我发现在这种情况下,你可以使用规则链,如下所示: public Temporar

我在一个测试类中定义了两个规则,但奇怪的是,一次只能使用其中一个-最后定义的一个

@Rule public ExpectedException exception = ExpectedException.none();    
@Rule public TemporaryFolder folder= new TemporaryFolder();

我一辈子都不知道如何定义两个或多个规则并分别使用它们

我也有同样的问题,我发现在这种情况下,你可以使用规则链,如下所示:

public TemporaryFolder temp;
public ExpectedException thrown;

@Rule
public TestRule chain =
    RuleChain.outerRule(temp = new TemporaryFolder())
             .around(thrown = ExpectedException.none());

您可以看到另一个示例,该示例也可以提供帮助。

您所说的“一次只能运行其中一个”是什么意思?您能否提供更多示例代码,说明您如何在测试代码中使用规则,并说明哪些不正确?如果我同时定义了这两个规则,并且在一个测试中使用了
文件夹。something()
和另一个
exception.expect(ArrayIndexOutOfBoundsException.class)
中,异常规则将无法按照首先定义的方式工作。我在两个代码行中没有看到错误——这应该可以工作。你可以发布你整个测试类的代码吗?虽然我不明白为什么规则不能按声明的顺序累积和执行,但这是有效的。在每个不想使用第二条规则的测试类中,我必须定义这个链?它真的是一条链子吗?看起来像一个层次结构。