Package org.junit.rules
Class RuleChain
- java.lang.Object
-
- org.junit.rules.RuleChain
-
- All Implemented Interfaces:
TestRule
public class RuleChain extends java.lang.Object implements TestRule
TheRuleChain
can be used for creating composite rules. You create aRuleChain
withouterRule(TestRule)
and subsequent calls ofaround(TestRule)
:public abstract class CompositeRules { public static TestRule extendedLogging() { return RuleChain.outerRule(new LoggingRule("outer rule")) .around(new LoggingRule("middle rule")) .around(new LoggingRule("inner rule")); } }
public class UseRuleChain { @Rule public final TestRule extendedLogging = CompositeRules.extendedLogging(); @Test public void example() { assertTrue(true); } }
writes the logstarting outer rule starting middle rule starting inner rule finished inner rule finished middle rule finished outer rule
In older versions of JUnit (before 4.13)RuleChain
was used for ordering rules. We recommend to not use it for this purpose anymore. You can use the attributeorder
of the annotationRule
orClassRule
for ordering rules.- Since:
- 4.10
- See Also:
Rule.order()
,ClassRule.order()
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Statement
apply(Statement base, Description description)
Modifies the method-runningStatement
to implement this test-running rule.RuleChain
around(TestRule enclosedRule)
static RuleChain
emptyRuleChain()
Returns aRuleChain
without aTestRule
.static RuleChain
outerRule(TestRule outerRule)
Returns aRuleChain
with a singleTestRule
.
-
-
-
Method Detail
-
emptyRuleChain
public static RuleChain emptyRuleChain()
- Returns:
- a
RuleChain
without aTestRule
.
-
outerRule
public static RuleChain outerRule(TestRule outerRule)
- Parameters:
outerRule
- the outer rule of theRuleChain
.- Returns:
- a
RuleChain
with a singleTestRule
.
-
around
public RuleChain around(TestRule enclosedRule)
- Parameters:
enclosedRule
- the rule to enclose; must not benull
.- Returns:
- a new
RuleChain
. - Throws:
java.lang.NullPointerException
- if the argumentenclosedRule
isnull
-
apply
public Statement apply(Statement base, Description description)
Modifies the method-runningStatement
to implement this test-running rule.- Specified by:
apply
in interfaceTestRule
- Parameters:
base
- TheStatement
to be modifieddescription
- ADescription
of the test implemented inbase
- Returns:
- a new statement, which may be the same as
base
, a wrapper aroundbase
, or a completely new Statement.
-
-