org.junit.rules
Class RuleChain
java.lang.Objectorg.junit.rules.RuleChain
- All Implemented Interfaces:
- TestRule
The RuleChain
can be used for creating composite rules. You create a RuleChain
with outerRule(TestRule)
and subsequent calls of around(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 log
starting outer rule starting middle rule starting inner rule finished inner rule finished middle rule finished outer ruleIn 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 attribute
order
of the annotation
Rule
or
ClassRule
for ordering rules.
- Since:
- 4.10
- See Also:
-
Rule.order()
,ClassRule.order()
Method Summary | |
---|---|
Statement |
apply(Statement base, Description description) Modifies the method-running Statement to implement this test-running rule. |
RuleChain |
around(TestRule enclosedRule) Create a new RuleChain , which encloses the given TestRule with the rules of the current RuleChain . |
static RuleChain |
emptyRuleChain() Returns a RuleChain without a TestRule . |
static RuleChain |
outerRule(TestRule outerRule) Returns a RuleChain with a single TestRule . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
---|
emptyRuleChain
public static RuleChain emptyRuleChain()
-
Returns a
RuleChain
without aTestRule
. This method may be the starting point of aRuleChain
. -
-
- Returns:
-
a
RuleChain
without aTestRule
.
outerRule
public static RuleChain outerRule(TestRule outerRule)
-
Returns a
RuleChain
with a singleTestRule
. This method is the usual starting point of aRuleChain
. -
-
- Parameters:
-
outerRule
- the outer rule of theRuleChain
. - Returns:
-
a
RuleChain
with a singleTestRule
.
around
public RuleChain around(TestRule enclosedRule)
-
Create a new
RuleChain
, which encloses the givenTestRule
with the rules of the currentRuleChain
. -
-
- Parameters:
-
enclosedRule
- the rule to enclose; must not benull
. - Returns:
-
a new
RuleChain
. - Throws:
-
NullPointerException
- if the argumentenclosedRule
isnull
apply
public Statement apply(Statement base, Description description)
-
Modifies the method-running
Statement
to implement this test-running rule. -
- Parameters:
-
base
- TheStatement
to be modified -
description
- 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.