我在使用intelliJ运行单元测试时遇到问题。我已经浏览了其他论坛,人们有类似的问题,但到目前为止,我仍然无法让它工作。这是错误:
java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: java.io.FileNotFoundException: class path resource [com/d1/d2/service/ServiceTest-context.xml] cannot be opened because it does not exist
在我的测试中,我有:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "ServiceTest-context.xml")
public class ServiceImplTest ....
我已经明确证实该文件存在于由行引起的位置。我还读了一个检查输出目录的建议,我已经验证它也存在。还有什么比你更突出的吗?我可以使用ant从命令行运行测试,但我希望能够运行单独的类而不是模块。
项目:
IntelliJ_project
src
test
com
d1
d2
otherStuff
...
...
service
ServiceImplTest.java
ServiceTest-context.xml
outputFolder:
test-classes (output folder)
com
d1
d2
service
ServiceImplTest.class
所以事实证明我在查找错误的输出目录。上下文文件不会使其到达输出位置。我怎么去那里?
答案 0 :(得分:6)
如果这是一个多模块项目,并且您的测试在使用
运行时可以正常工作mvn test
但是IDEA无法找到配置文件,请尝试:
在测试类中,将配置更改为:
@ContextConfiguration("file:test/com/d1/d2/service/ServiceTest-context.xml")
这个配置对我有用(并且也被spring-mvc-showcase使用)。
答案 1 :(得分:4)
试试这个解决方案,它对我有用:
将ServiceTest-context.xml
放入src/test/resources
文件夹。
将这些行添加到您的pom的build
部分:
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
重新导入Maven项目并运行您的个人测试。
答案 2 :(得分:0)
遇到同样的问题。 IntelliJ中似乎存在一个错误,它不会将所有文件复制到目标目录。因此,找不到您的上下文。有同样的问题。
如果检查target / test-classes文件夹,您可能会注意到上下文不在所需的位置。至少那是我所拥有的。
我过去遇到很多麻烦(除了手册之外)。如果您很幸运,请尝试取消标记测试资源并将其标记为测试资源。然后做一个mvn干净。然后运行您的测试。另外,请确保在您的测试用例配置中,它会触发一个Make ...这会在测试类中获得我的上下文。还要验证测试类的工作目录是否正确。我有一个案例,它被设置为我保存项目文件的目录....