Class SpringMethodRule
- All Implemented Interfaces:
- MethodRule
SpringMethodRule is a custom JUnit 4 MethodRule that
 supports instance-level and method-level features of the
 Spring TestContext Framework in standard JUnit tests by means
 of the TestContextManager and associated support classes and
 annotations.
 In contrast to the SpringJUnit4ClassRunner, Spring's rule-based JUnit support has the advantage
 that it is independent of any Runner and
 can therefore be combined with existing alternative runners like JUnit's
 Parameterized or third-party runners such as the MockitoJUnitRunner.
 
In order to achieve the same functionality as the SpringJUnit4ClassRunner,
 however, a SpringMethodRule must be combined with a SpringClassRule,
 since SpringMethodRule only supports the instance-level and method-level
 features of the SpringJUnit4ClassRunner.
 
Example Usage
 public class ExampleSpringIntegrationTest {
    @ClassRule
    public static final SpringClassRule springClassRule = new SpringClassRule();
    @Rule
    public final SpringMethodRule springMethodRule = new SpringMethodRule();
    // ...
 }The following list constitutes all annotations currently supported directly
 or indirectly by SpringMethodRule. (Note that additional annotations
 may be supported by various
 TestExecutionListener or
 TestContextBootstrapper
 implementations.)
 
NOTE: This class requires JUnit 4.12 or higher.
WARNING: Due to the shortcomings of JUnit rules, the
 SpringMethodRule
 prepares the test instance before @Before lifecycle methods instead of
 immediately after instantiation of the test class. In addition, the
 SpringMethodRule does not support the
 beforeTestExecution() and afterTestExecution() callbacks of the
 TestExecutionListener
 API.
- Since:
- 4.2
- Author:
- Sam Brannen, Philippe Marschall
- See Also:
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionapply(Statement base, FrameworkMethod frameworkMethod, Object testInstance) Apply instance-level and method-level features of the Spring TestContext Framework to the suppliedbasestatement.
- 
Constructor Details- 
SpringMethodRulepublic SpringMethodRule()
 
- 
- 
Method Details- 
applyApply instance-level and method-level features of the Spring TestContext Framework to the suppliedbasestatement.Specifically, this method invokes the prepareTestInstance(),beforeTestMethod(), andafterTestMethod()methods on theTestContextManager, potentially with Spring timeouts and repetitions.In addition, this method checks whether the test is enabled in the current execution environment. This prevents methods with a non-matching @IfProfileValueannotation from running altogether, even skipping the execution ofprepareTestInstance()methods inTestExecutionListeners.- Specified by:
- applyin interface- MethodRule
- Parameters:
- base- the base- Statementthat this rule should be applied to
- frameworkMethod- the method which is about to be invoked on the test instance
- testInstance- the current test instance
- Returns:
- a statement that wraps the supplied basewith instance-level and method-level features of the Spring TestContext Framework
- See Also:
- 
- withBeforeTestMethodCallbacks(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object, org.springframework.test.context.TestContextManager)
- withAfterTestMethodCallbacks(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object, org.springframework.test.context.TestContextManager)
- withPotentialRepeat(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object)
- withPotentialTimeout(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object)
- withTestInstancePreparation(org.junit.runners.model.Statement, java.lang.Object, org.springframework.test.context.TestContextManager)
- withProfileValueCheck(org.junit.runners.model.Statement, java.lang.reflect.Method, java.lang.Object)
 
 
 
-