|
Spring Framework example source code file (SpringJUnit4ClassRunner.java)
The Spring Framework SpringJUnit4ClassRunner.java source code/* * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.test.context.junit4; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.internal.runners.InitializationError; import org.junit.internal.runners.JUnit4ClassRunner; import org.junit.runner.Description; import org.junit.runner.notification.RunNotifier; import org.springframework.test.context.TestContextManager; /** * <p> * SpringJUnit4ClassRunner is a custom extension of {@link JUnit4ClassRunner} * which provides functionality of the <em>Spring TestContext Framework * to standard JUnit 4.4+ tests by means of the {@link TestContextManager} and * associated support classes and annotations. * </p> * <p> * The following list constitutes all annotations currently supported directly * by SpringJUnit4ClassRunner. * <em>(Note that additional annotations may be supported by various * {@link org.springframework.test.context.TestExecutionListener TestExecutionListeners})</em> * </p> * <ul> * <li>{@link org.junit.Test#expected() @Test(expected=...)} * <li>{@link org.springframework.test.annotation.ExpectedException @ExpectedException} * <li>{@link org.junit.Test#timeout() @Test(timeout=...)} * <li>{@link org.springframework.test.annotation.Timed @Timed} * <li>{@link org.springframework.test.annotation.Repeat @Repeat} * <li>{@link org.junit.Ignore @Ignore} * <li>{@link org.springframework.test.annotation.ProfileValueSourceConfiguration @ProfileValueSourceConfiguration} * <li>{@link org.springframework.test.annotation.IfProfileValue @IfProfileValue} * </ul> * * @author Sam Brannen * @author Juergen Hoeller * @since 2.5 * @see TestContextManager */ public class SpringJUnit4ClassRunner extends JUnit4ClassRunner { private static final Log logger = LogFactory.getLog(SpringJUnit4ClassRunner.class); private final TestContextManager testContextManager; /** * Constructs a new <code>SpringJUnit4ClassRunner and initializes a * {@link TestContextManager} to provide Spring testing functionality to * standard JUnit tests. * @param clazz the Class object corresponding to the test class to be run * @see #createTestContextManager(Class) */ public SpringJUnit4ClassRunner(Class<?> clazz) throws InitializationError { super(clazz); if (logger.isDebugEnabled()) { logger.debug("SpringJUnit4ClassRunner constructor called with [" + clazz + "]."); } this.testContextManager = createTestContextManager(clazz); } /** * Delegates to {@link JUnit4ClassRunner#createTest()} to create the test * instance and then to a {@link TestContextManager} to * {@link TestContextManager#prepareTestInstance(Object) prepare} the test * instance for Spring testing functionality. * @see JUnit4ClassRunner#createTest() * @see TestContextManager#prepareTestInstance(Object) */ @Override protected Object createTest() throws Exception { Object testInstance = super.createTest(); getTestContextManager().prepareTestInstance(testInstance); return testInstance; } /** * Creates a new {@link TestContextManager}. Can be overridden by subclasses. * @param clazz the Class object corresponding to the test class to be managed */ protected TestContextManager createTestContextManager(Class<?> clazz) { return new TestContextManager(clazz); } /** * Get the {@link TestContextManager} associated with this runner. */ protected final TestContextManager getTestContextManager() { return this.testContextManager; } /** * Invokes the supplied {@link Method test method} and notifies the supplied * {@link RunNotifier} of the appropriate events. * @see #createTest() * @see JUnit4ClassRunner#invokeTestMethod(Method,RunNotifier) */ @Override protected void invokeTestMethod(Method method, RunNotifier notifier) { if (logger.isDebugEnabled()) { logger.debug("Invoking test method [" + method.toGenericString() + "]"); } // The following is a 1-to-1 copy of the original JUnit 4.4 code, except // that we use custom implementations for TestMethod and MethodRoadie. Description description = methodDescription(method); Object testInstance; try { testInstance = createTest(); } catch (InvocationTargetException ex) { notifier.testAborted(description, ex.getCause()); return; } catch (Exception ex) { notifier.testAborted(description, ex); return; } SpringTestMethod testMethod = new SpringTestMethod(method, getTestClass()); new SpringMethodRoadie(getTestContextManager(), testInstance, testMethod, notifier, description).run(); } } Other Spring Framework examples (source code examples)Here is a short list of links related to this Spring Framework SpringJUnit4ClassRunner.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.