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.
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:
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 incorrect| Modifier 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 basebase,
a wrapper around base, or a completely new Statement.