spring - @ContextConfiguration无法在src / test / resources中加载配置文件

时间:2010-04-09 03:05:02

标签: java spring maven-2 junit junit4

我尝试使用以下抽象类在src / test / resources类路径中加载spring配置文件:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:/applicationContext.xml"})
public class BaseIntegrationTests {

}

我在src / test / resources中有applicationContext.xml文件但是Spring无法加载它。

谢谢。

7 个答案:

答案 0 :(得分:25)

准确地说,它是类路径上的测试输出目录target/test-classes)的内容,而不是src/test/resources。但src/test/resources下的资源会被resources:testResources目标复制到测试输出目录(默认情况下绑定到 process-test-resources 相)。

话虽如此,您的代码看起来很好,测试源代码的资源应该由IDE或Maven在运行测试时复制,因此应该在类路径上可用。所以一定有别的错误。我可以看到你的类是集成测试的基类。你在pom中配置了什么花哨的东西吗?你能表现出来吗?

答案 1 :(得分:16)

尝试使用*以便它可以搜索到您的类路径

@ContextConfiguration(locations={"classpath*:applicationContext.xml"})

答案 2 :(得分:5)

reported bug使用spring-test依赖项(包括SpringJUnit4ClassRunner)和JUnit版本> 4.4。

如果您使用的是比4.4更新的JUnit版本,请尝试将其降低到4.4并查看它是否能解决您的问题。

答案 3 :(得分:4)

您的应用程序上下文必须包含在类路径中并放入*:

@ContextConfiguration(locations = { "classpath:*/application-context.xml" })

答案 4 :(得分:1)

你似乎正在使用maven,并尝试在eclipse中运行测试。检查构建文件夹(target/test-classes/)以查找applicationContext.xml。如果它不在那里,你必须先建立。

答案 5 :(得分:0)

我想我有类似的问题, 我发现我的application-context.xml不在src / test / resources上的target / test-classes /上

答案 6 :(得分:0)

如果您正在使用Maven并从eclipse运行测试用例, 项目右键单击> Maven> maven update( ALT F5 )可能适合您。