org.junit.rules
Interface TestRule
- All Known Implementing Classes:
- ErrorCollector, ExpectedException, ExternalResource, TemporaryFolder, TestName, TestWatcher, Timeout, Verifier
public interface TestRule
A TestRule is an alteration in how a test method, or set of test methods,
is run and reported. A TestRule may add additional checks that cause
a test that would otherwise fail to pass, or it may perform necessary setup or
cleanup for tests, or it may observe test execution to report it elsewhere.
TestRules can do everything that could be done previously with
methods annotated with Before,
After, BeforeClass, or
AfterClass, but they are more powerful, and more easily
shared
between projects and classes.
The default JUnit test runners for suites and
individual test cases recognize TestRules introduced in two different
ways. Rule annotates method-level
TestRules, and ClassRule
annotates class-level TestRules. See Javadoc for those annotations
for more information.
Multiple TestRules can be applied to a test or suite execution. The
Statement that executes the method or suite is passed to each annotated
Rule in turn, and each may return a substitute or modified
Statement, which is passed to the next Rule, if any. For
examples of how this can be useful, see these provided TestRules,
or write your own:
apply
Statement apply(Statement base,
Description description)
- Modifies the method-running
Statement to implement this
test-running rule.
- Parameters:
base - The Statement to be modifieddescription - A Description of the test implemented in base
- Returns:
- a new statement, which may be the same as
base,
a wrapper around base, or a completely new Statement.