public class SpringJUnit4ClassRunner
extends org.junit.runners.BlockJUnit4ClassRunner
SpringJUnit4ClassRunner is a custom extension of JUnit's
 BlockJUnit4ClassRunner which provides functionality of the
 Spring TestContext Framework to standard JUnit tests by means of the
 TestContextManager and associated support classes and annotations.
 To use this class, simply annotate a JUnit 4 based test class with
 @RunWith(SpringJUnit4ClassRunner.class) or @RunWith(SpringRunner.class).
 
The following list constitutes all annotations currently supported directly
 or indirectly by SpringJUnit4ClassRunner. (Note that additional
 annotations may be supported by various
 TestExecutionListener
 or TestContextBootstrapper
 implementations.)
 
@Test(expected=...)@Test(timeout=...)@Timed@Repeat@Ignore@ProfileValueSourceConfiguration@IfProfileValueIf you would like to use the Spring TestContext Framework with a runner
 other than this one, use SpringClassRule and SpringMethodRule.
 
NOTE: As of Spring Framework 4.3, this class requires JUnit 4.12 or higher.
SpringRunner, 
TestContextManager, 
AbstractJUnit4SpringContextTests, 
AbstractTransactionalJUnit4SpringContextTests, 
SpringClassRule, 
SpringMethodRule| Constructor and Description | 
|---|
SpringJUnit4ClassRunner(java.lang.Class<?> clazz)
Construct a new  
SpringJUnit4ClassRunner and initialize a
 TestContextManager to provide Spring testing functionality to
 standard JUnit tests. | 
| Modifier and Type | Method and Description | 
|---|---|
protected java.lang.Object | 
createTest()
Delegate to the parent implementation for creating the test instance and
 then allow the  
TestContextManager to
 prepare the test instance before returning it. | 
protected TestContextManager | 
createTestContextManager(java.lang.Class<?> clazz)
Create a new  
TestContextManager for the supplied test class. | 
org.junit.runner.Description | 
getDescription()
Return a description suitable for an ignored test class if the test is
 disabled via  
@IfProfileValue at the class-level, and
 otherwise delegate to the parent implementation. | 
protected java.lang.Class<? extends java.lang.Throwable> | 
getExpectedException(org.junit.runners.model.FrameworkMethod frameworkMethod)
Get the  
exception that the supplied test method is expected to throw. | 
protected long | 
getJUnitTimeout(org.junit.runners.model.FrameworkMethod frameworkMethod)
Retrieve the configured JUnit  
timeout from the @Test
 annotation on the supplied test method. | 
protected long | 
getSpringTimeout(org.junit.runners.model.FrameworkMethod frameworkMethod)
Retrieve the configured Spring-specific  
timeout from the
 @Timed annotation
 on the supplied test method. | 
protected TestContextManager | 
getTestContextManager()
Get the  
TestContextManager associated with this runner. | 
protected boolean | 
isTestMethodIgnored(org.junit.runners.model.FrameworkMethod frameworkMethod)
Return  
true if @Ignore is present for the supplied
 test method or if the test method is disabled
 via @IfProfileValue. | 
protected org.junit.runners.model.Statement | 
methodBlock(org.junit.runners.model.FrameworkMethod frameworkMethod)
Augment the default JUnit behavior
 with potential repeats of the entire
 execution chain. 
 | 
protected org.junit.runners.model.Statement | 
possiblyExpectingExceptions(org.junit.runners.model.FrameworkMethod frameworkMethod,
                           java.lang.Object testInstance,
                           org.junit.runners.model.Statement next)
Perform the same logic as
  
BlockJUnit4ClassRunner.possiblyExpectingExceptions(FrameworkMethod, Object, Statement)
 except that the expected exception is retrieved using
 getExpectedException(FrameworkMethod). | 
void | 
run(org.junit.runner.notification.RunNotifier notifier)
Check whether the test is enabled in the current execution environment. 
 | 
protected void | 
runChild(org.junit.runners.model.FrameworkMethod frameworkMethod,
        org.junit.runner.notification.RunNotifier notifier)
Perform the same logic as
  
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier),
 except that tests are determined to be ignored by
 isTestMethodIgnored(FrameworkMethod). | 
protected org.junit.runners.model.Statement | 
withAfterClasses(org.junit.runners.model.Statement statement)
Wrap the  
Statement returned by the parent implementation with a
 RunAfterTestClassCallbacks statement, thus preserving the default
 JUnit functionality while adding support for the Spring TestContext Framework. | 
protected org.junit.runners.model.Statement | 
withAfters(org.junit.runners.model.FrameworkMethod frameworkMethod,
          java.lang.Object testInstance,
          org.junit.runners.model.Statement statement)
Wrap the  
Statement returned by the parent implementation with a
 RunAfterTestMethodCallbacks statement, thus preserving the
 default functionality while adding support for the Spring TestContext
 Framework. | 
protected org.junit.runners.model.Statement | 
withAfterTestExecutionCallbacks(org.junit.runners.model.FrameworkMethod frameworkMethod,
                               java.lang.Object testInstance,
                               org.junit.runners.model.Statement statement)
Wrap the supplied  
Statement with a RunAfterTestExecutionCallbacks
 statement, thus preserving the default functionality while adding support for the
 Spring TestContext Framework. | 
protected org.junit.runners.model.Statement | 
withBeforeClasses(org.junit.runners.model.Statement statement)
Wrap the  
Statement returned by the parent implementation with a
 RunBeforeTestClassCallbacks statement, thus preserving the
 default JUnit functionality while adding support for the Spring TestContext
 Framework. | 
protected org.junit.runners.model.Statement | 
withBefores(org.junit.runners.model.FrameworkMethod frameworkMethod,
           java.lang.Object testInstance,
           org.junit.runners.model.Statement statement)
Wrap the  
Statement returned by the parent implementation with a
 RunBeforeTestMethodCallbacks statement, thus preserving the
 default functionality while adding support for the Spring TestContext
 Framework. | 
protected org.junit.runners.model.Statement | 
withBeforeTestExecutionCallbacks(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                java.lang.Object testInstance,
                                org.junit.runners.model.Statement statement)
Wrap the supplied  
Statement with a RunBeforeTestExecutionCallbacks
 statement, thus preserving the default functionality while adding support for the
 Spring TestContext Framework. | 
protected org.junit.runners.model.Statement | 
withPotentialRepeat(org.junit.runners.model.FrameworkMethod frameworkMethod,
                   java.lang.Object testInstance,
                   org.junit.runners.model.Statement next)
Wrap the supplied  
Statement with a SpringRepeat statement. | 
protected org.junit.runners.model.Statement | 
withPotentialTimeout(org.junit.runners.model.FrameworkMethod frameworkMethod,
                    java.lang.Object testInstance,
                    org.junit.runners.model.Statement next)
Perform the same logic as
  
BlockJUnit4ClassRunner.withPotentialTimeout(FrameworkMethod, Object, Statement)
 but with additional support for Spring's @Timed annotation. | 
collectInitializationErrors, computeTestMethods, describeChild, getChildren, getTestRules, isIgnored, methodInvoker, rules, testName, validateConstructor, validateFields, validateInstanceMethods, validateNoNonStaticInnerClass, validateOnlyOneConstructor, validateTestMethods, validateZeroArgConstructorpublic SpringJUnit4ClassRunner(java.lang.Class<?> clazz)
                        throws org.junit.runners.model.InitializationError
SpringJUnit4ClassRunner and initialize a
 TestContextManager to provide Spring testing functionality to
 standard JUnit tests.clazz - the test class to be runorg.junit.runners.model.InitializationErrorcreateTestContextManager(Class)protected TestContextManager createTestContextManager(java.lang.Class<?> clazz)
TestContextManager for the supplied test class.
 Can be overridden by subclasses.
clazz - the test class to be managedprotected final TestContextManager getTestContextManager()
TestContextManager associated with this runner.public org.junit.runner.Description getDescription()
@IfProfileValue at the class-level, and
 otherwise delegate to the parent implementation.getDescription in interface org.junit.runner.DescribablegetDescription in class org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>ProfileValueUtils.isTestEnabledInThisEnvironment(Class)public void run(org.junit.runner.notification.RunNotifier notifier)
This prevents classes with a non-matching @IfProfileValue
 annotation from running altogether, even skipping the execution of
 prepareTestInstance() methods in TestExecutionListeners.
run in class org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>ProfileValueUtils.isTestEnabledInThisEnvironment(Class), 
IfProfileValue, 
TestExecutionListenerprotected org.junit.runners.model.Statement withBeforeClasses(org.junit.runners.model.Statement statement)
Statement returned by the parent implementation with a
 RunBeforeTestClassCallbacks statement, thus preserving the
 default JUnit functionality while adding support for the Spring TestContext
 Framework.withBeforeClasses in class org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>RunBeforeTestClassCallbacksprotected org.junit.runners.model.Statement withAfterClasses(org.junit.runners.model.Statement statement)
Statement returned by the parent implementation with a
 RunAfterTestClassCallbacks statement, thus preserving the default
 JUnit functionality while adding support for the Spring TestContext Framework.withAfterClasses in class org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>RunAfterTestClassCallbacksprotected java.lang.Object createTest()
                               throws java.lang.Exception
TestContextManager to
 prepare the test instance before returning it.createTest in class org.junit.runners.BlockJUnit4ClassRunnerjava.lang.ExceptionTestContextManager.prepareTestInstance(java.lang.Object)protected void runChild(org.junit.runners.model.FrameworkMethod frameworkMethod,
                        org.junit.runner.notification.RunNotifier notifier)
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier),
 except that tests are determined to be ignored by
 isTestMethodIgnored(FrameworkMethod).runChild in class org.junit.runners.BlockJUnit4ClassRunnerprotected org.junit.runners.model.Statement methodBlock(org.junit.runners.model.FrameworkMethod frameworkMethod)
Furthermore, support for timeouts has been moved down the execution
 chain in order to include execution of @Before
 and @After methods within the timed execution.
 Note that this differs from the default JUnit behavior of executing
 @Before and @After methods in the main thread while
 executing the actual test method in a separate thread. Thus, the net
 effect is that @Before and @After methods will be
 executed in the same thread as the test method. As a consequence,
 JUnit-specified timeouts will work fine in combination with Spring
 transactions. However, JUnit-specific timeouts still differ from
 Spring-specific timeouts in that the former execute in a separate
 thread while the latter simply execute in the main thread (like regular
 tests).
methodBlock in class org.junit.runners.BlockJUnit4ClassRunnerBlockJUnit4ClassRunner.methodInvoker(FrameworkMethod, Object), 
withBeforeTestExecutionCallbacks(FrameworkMethod, Object, Statement), 
withAfterTestExecutionCallbacks(FrameworkMethod, Object, Statement), 
possiblyExpectingExceptions(FrameworkMethod, Object, Statement), 
withBefores(FrameworkMethod, Object, Statement), 
withAfters(FrameworkMethod, Object, Statement), 
withRulesReflectively(FrameworkMethod, Object, Statement), 
withPotentialRepeat(FrameworkMethod, Object, Statement), 
withPotentialTimeout(FrameworkMethod, Object, Statement)protected boolean isTestMethodIgnored(org.junit.runners.model.FrameworkMethod frameworkMethod)
true if @Ignore is present for the supplied
 test method or if the test method is disabled
 via @IfProfileValue.protected org.junit.runners.model.Statement possiblyExpectingExceptions(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                                                        java.lang.Object testInstance,
                                                                        org.junit.runners.model.Statement next)
BlockJUnit4ClassRunner.possiblyExpectingExceptions(FrameworkMethod, Object, Statement)
 except that the expected exception is retrieved using
 getExpectedException(FrameworkMethod).possiblyExpectingExceptions in class org.junit.runners.BlockJUnit4ClassRunner@Nullable protected java.lang.Class<? extends java.lang.Throwable> getExpectedException(org.junit.runners.model.FrameworkMethod frameworkMethod)
exception that the supplied test method is expected to throw.
 Supports JUnit's @Test(expected=...) annotation.
 
Can be overridden by subclasses.
null if none was specifiedprotected org.junit.runners.model.Statement withPotentialTimeout(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                                                 java.lang.Object testInstance,
                                                                 org.junit.runners.model.Statement next)
BlockJUnit4ClassRunner.withPotentialTimeout(FrameworkMethod, Object, Statement)
 but with additional support for Spring's @Timed annotation.
 Supports both Spring's @Timed
 and JUnit's @Test(timeout=...) annotations, but not both
 simultaneously.
withPotentialTimeout in class org.junit.runners.BlockJUnit4ClassRunnerSpringFailOnTimeout, a FailOnTimeout,
 or the supplied Statement as appropriategetSpringTimeout(FrameworkMethod), 
getJUnitTimeout(FrameworkMethod)protected long getJUnitTimeout(org.junit.runners.model.FrameworkMethod frameworkMethod)
timeout from the @Test
 annotation on the supplied test method.0 if none was specifiedprotected long getSpringTimeout(org.junit.runners.model.FrameworkMethod frameworkMethod)
timeout from the
 @Timed annotation
 on the supplied test method.0 if none was specifiedTestAnnotationUtils.getTimeout(Method)protected org.junit.runners.model.Statement withBeforeTestExecutionCallbacks(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                                                             java.lang.Object testInstance,
                                                                             org.junit.runners.model.Statement statement)
Statement with a RunBeforeTestExecutionCallbacks
 statement, thus preserving the default functionality while adding support for the
 Spring TestContext Framework.RunBeforeTestExecutionCallbacksprotected org.junit.runners.model.Statement withAfterTestExecutionCallbacks(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                                                            java.lang.Object testInstance,
                                                                            org.junit.runners.model.Statement statement)
Statement with a RunAfterTestExecutionCallbacks
 statement, thus preserving the default functionality while adding support for the
 Spring TestContext Framework.RunAfterTestExecutionCallbacksprotected org.junit.runners.model.Statement withBefores(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                                        java.lang.Object testInstance,
                                                        org.junit.runners.model.Statement statement)
Statement returned by the parent implementation with a
 RunBeforeTestMethodCallbacks statement, thus preserving the
 default functionality while adding support for the Spring TestContext
 Framework.withBefores in class org.junit.runners.BlockJUnit4ClassRunnerRunBeforeTestMethodCallbacksprotected org.junit.runners.model.Statement withAfters(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                                       java.lang.Object testInstance,
                                                       org.junit.runners.model.Statement statement)
Statement returned by the parent implementation with a
 RunAfterTestMethodCallbacks statement, thus preserving the
 default functionality while adding support for the Spring TestContext
 Framework.withAfters in class org.junit.runners.BlockJUnit4ClassRunnerRunAfterTestMethodCallbacksprotected org.junit.runners.model.Statement withPotentialRepeat(org.junit.runners.model.FrameworkMethod frameworkMethod,
                                                                java.lang.Object testInstance,
                                                                org.junit.runners.model.Statement next)