@ContextConfiguration作用
@ContextConfiguration defines class-level metadata that is used to determine how to load and configure an ApplicationContext for integration tests.
Resolve path
Check out the Javadoc for AbstractContextLoader.modifyLocations() for details on how a location will be interpreted at runtime, in particular in case of a relative path. Also, check out the documentation on AbstractContextLoader.generateDefaultLocations() for details on the default locations that are going to be used if none are specified.
如果不传location参数,默认路径等于被注解类的路径+“-context”
比如测试类为com.example.MyTest,则location=classpath:com/example/MyTest-context
如果传参数将按照convertToClasspathResourcePaths的规则来创建locations
protected String[] modifyLocations(Class<?> clazz, String... locations) {
return TestContextResourceUtils.convertToClasspathResourcePaths(clazz, locations);
}
public static String[] convertToClasspathResourcePaths(Class<?> clazz, String... paths) {
String[] convertedPaths = new String[paths.length];
for (int i = 0; i < paths.length; i++) {
String path = paths[i];
if (path.startsWith(SLASH)) {
convertedPaths[i] = ResourceUtils.CLASSPATH_URL_PREFIX + path;
}
else if (!ResourcePatternUtils.isUrl(path)) {
convertedPaths[i] = ResourceUtils.CLASSPATH_URL_PREFIX + SLASH
+ StringUtils.cleanPath(ClassUtils.classPackageAsResourcePath(clazz) + SLASH + path);
}
else {
convertedPaths[i] = StringUtils.cleanPath(path);
}
}
return convertedPaths;
}