public interface TestRule
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.
TestRule
s 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 TestRule
s introduced in two different
ways. Rule
annotates method-level
TestRule
s, and ClassRule
annotates class-level TestRule
s. See Javadoc for those annotations
for more information.
Multiple TestRule
s 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:
ErrorCollector
: collect multiple errors in one test methodExpectedException
: make flexible assertions about thrown exceptionsExternalResource
: start and stop a server, for exampleTemporaryFolder
: create fresh files, and delete after testTestName
: remember the test name for use during the methodTestWatcher
: add logic at events during method executionTimeout
: cause test to fail after a set timeVerifier
: fail test if object state ends up incorrectModifier and Type | Method and Description |
---|---|
Statement |
apply(Statement base,
Description description)
Modifies the method-running
Statement to implement this
test-running rule. |
Statement apply(Statement base, Description description)
Statement
to implement this
test-running rule.base
- The Statement
to be modifieddescription
- A Description
of the test implemented in base
base
,
a wrapper around base
, or a completely new Statement.