Class SpringClassRule
- java.lang.Object
- org.springframework.test.context.junit4.rules.SpringClassRule
- All Implemented Interfaces:
TestRule
public class SpringClassRule extends Object implements TestRule
SpringClassRuleis a custom JUnitTestRulethat supports class-level features of the Spring TestContext Framework in standard JUnit tests by means of theTestContextManagerand associated support classes and annotations.In contrast to the
SpringJUnit4ClassRunner, Spring's rule-based JUnit support has the advantage that it is independent of anyRunnerand can therefore be combined with existing alternative runners like JUnit'sParameterizedor third-party runners such as theMockitoJUnitRunner.In order to achieve the same functionality as the
SpringJUnit4ClassRunner, however, aSpringClassRulemust be combined with aSpringMethodRule, sinceSpringClassRuleonly supports the class-level features of theSpringJUnit4ClassRunner.Example Usage
public class ExampleSpringIntegrationTest { @ClassRule public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule(); @Rule public final SpringMethodRule springMethodRule = new SpringMethodRule(); // ... }The following list constitutes all annotations currently supported directly or indirectly by
SpringClassRule. (Note that additional annotations may be supported by variousTestExecutionListenerorTestContextBootstrapperimplementations.)NOTE: As of Spring Framework 4.3, this class requires JUnit 4.12 or higher.
- Since:
- 4.2
- Author:
- Sam Brannen, Philippe Marschall
- See Also:
apply(Statement, Description),SpringMethodRule,TestContextManager,SpringJUnit4ClassRunner
Constructor Summary
Constructors Constructor Description SpringClassRule()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Statementapply(Statement base, Description description)Apply class-level features of the Spring TestContext Framework to the suppliedbasestatement.
Constructor Detail
SpringClassRule
public SpringClassRule()
Method Detail
apply
public Statement apply(Statement base, Description description)
Apply class-level features of the Spring TestContext Framework to the suppliedbasestatement.Specifically, this method retrieves the
TestContextManagerused by this rule and its associatedSpringMethodRuleand invokes thebeforeTestClass()andafterTestClass()methods on theTestContextManager.In addition, this method checks whether the test is enabled in the current execution environment. This prevents classes with a non-matching
@IfProfileValueannotation from running altogether, even skipping the execution ofbeforeTestClass()methods inTestExecutionListeners.- Specified by:
applyin interfaceTestRule- Parameters:
base- the baseStatementthat this rule should be applied todescription- aDescriptionof the current test execution- Returns:
- a statement that wraps the supplied
basewith class-level features of the Spring TestContext Framework - See Also:
getTestContextManager(java.lang.Class<?>),withBeforeTestClassCallbacks(org.junit.runners.model.Statement, org.springframework.test.context.TestContextManager),withAfterTestClassCallbacks(org.junit.runners.model.Statement, org.springframework.test.context.TestContextManager),withProfileValueCheck(org.junit.runners.model.Statement, java.lang.Class<?>),withTestContextManagerCacheEviction(org.junit.runners.model.Statement, java.lang.Class<?>)