|
Spring Framework example source code file (TestContext.java)
The Spring Framework TestContext.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;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.core.AttributeAccessorSupport;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.core.style.ToStringCreator;
import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
/**
* TestContext encapsulates the context in which a test is executed, agnostic of
* the actual testing framework in use.
*
* @author Sam Brannen
* @author Juergen Hoeller
* @since 2.5
*/
public class TestContext extends AttributeAccessorSupport {
private static final String DEFAULT_CONTEXT_LOADER_CLASS_NAME = "org.springframework.test.context.support.GenericXmlContextLoader";
private static final long serialVersionUID = -5827157174866681233L;
private static final Log logger = LogFactory.getLog(TestContext.class);
private final ContextCache contextCache;
private final ContextLoader contextLoader;
private final String[] locations;
private final Class<?> testClass;
private Object testInstance;
private Method testMethod;
private Throwable testException;
/**
* Construct a new test context for the supplied {@link Class test class}
* and {@link ContextCache context cache} and parses the corresponding
* {@link ContextConfiguration @ContextConfiguration} annotation, if present.
* @param testClass the {@link Class} object corresponding to the test class
* for which the test context should be constructed (must not be <code>null)
* @param contextCache the context cache from which the constructed test context
* should retrieve application contexts (must not be <code>null)
*/
@SuppressWarnings("unchecked")
TestContext(Class<?> testClass, ContextCache contextCache) {
Assert.notNull(testClass, "Test class must not be null");
Assert.notNull(contextCache, "ContextCache must not be null");
ContextConfiguration contextConfiguration = testClass.getAnnotation(ContextConfiguration.class);
String[] locations = null;
ContextLoader contextLoader = null;
if (contextConfiguration == null) {
if (logger.isInfoEnabled()) {
logger.info("@ContextConfiguration not found for class [" + testClass + "]");
}
}
else {
if (logger.isTraceEnabled()) {
logger.trace("Retrieved @ContextConfiguration [" + contextConfiguration + "] for class [" + testClass + "]");
}
Class<? extends ContextLoader> contextLoaderClass = contextConfiguration.loader();
if (ContextLoader.class.equals(contextLoaderClass)) {
try {
contextLoaderClass = (Class<? extends ContextLoader>) getClass().getClassLoader().loadClass(
DEFAULT_CONTEXT_LOADER_CLASS_NAME);
}
catch (ClassNotFoundException ex) {
throw new IllegalStateException("Could not load default ContextLoader class ["
+ DEFAULT_CONTEXT_LOADER_CLASS_NAME + "]. Specify @ContextConfiguration's 'loader' "
+ "attribute or make the default loader class available.");
}
}
contextLoader = (ContextLoader) BeanUtils.instantiateClass(contextLoaderClass);
locations = retrieveContextLocations(contextLoader, testClass);
}
this.testClass = testClass;
this.contextCache = contextCache;
this.contextLoader = contextLoader;
this.locations = locations;
}
/**
* Retrieve {@link ApplicationContext} resource locations for the supplied
* {@link Class class}, using the supplied {@link ContextLoader} to
* {@link ContextLoader#processLocations(Class, String...) process} the
* locations.
* <p>Note that the
* {@link ContextConfiguration#inheritLocations() inheritLocations} flag of
* {@link ContextConfiguration @ContextConfiguration} will be taken into
* consideration. Specifically, if the <code>inheritLocations flag
* is set to <code>true, locations defined in the annotated class
* will be appended to the locations defined in superclasses.
* @param contextLoader the ContextLoader to use for processing the locations
* (must not be <code>null)
* @param clazz the class for which to retrieve the resource locations
* (must not be <code>null)
* @return the list of ApplicationContext resource locations for the specified
* class, including locations from superclasses if appropriate
* @throws IllegalArgumentException if {@link ContextConfiguration @ContextConfiguration}
* is not <em>present on the supplied class
*/
private String[] retrieveContextLocations(ContextLoader contextLoader, Class<?> clazz) {
Assert.notNull(contextLoader, "ContextLoader must not be null");
Assert.notNull(clazz, "Class must not be null");
List<String> locationsList = new ArrayList
Other Spring Framework examples (source code examples)Here is a short list of links related to this Spring Framework TestContext.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.