Interface TestRule

  • All Known Implementing Classes:
    DisableOnDebug, ErrorCollector, ExpectedException, ExternalResource, RuleChain, Stopwatch, 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:
    Since:
    4.9
    • Method Detail

      • apply

        Statement apply​(Statement base,
                        Description description)
        Modifies the method-running Statement to implement this test-running rule.
        Parameters:
        base - The Statement to be modified
        description - 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.