4

我在 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

导出目录:

test-classes (output folder)
    com
        d1
            d2
                service
                    ServiceImplTest.class

所以事实证明我在错误的目录中寻找输出。上下文文件不会到达输出位置。我怎么把它弄到那里?

4

3 回答 3

6

如果这是一个多模块项目,并且您的测试在运行时确实有效

mvn test

但是IDEA找不到配置文件,试试这个:

  1. 菜单:运行 -> 编辑配置...
  2. 更改“工作目录”以指向您的“Intellij_Project”文件夹(带有斜杠)。
  3. 在测试类中,将您的配置更改为:

    @ContextConfiguration("file:test/com/d1/d2/service/ServiceTest-context.xml")
    

这个配置对我有用(也被 spring-mvc-showcase 使用)。

于 2013-09-19T12:20:21.547 回答
4

试试这个解决方案,它对我有用:

  1. 放入文件夹ServiceTest-context.xmlsrc/test/resources

  2. 将这些行添加到buildpom 的部分:

    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources>
    
  3. 重新导入 Maven 项目并运行您的个人测试。

于 2013-05-21T06:08:48.183 回答
0

有同样的问题。IntelliJ 中似乎存在一个错误,它不会将所有文件复制到目标目录。因此,找不到您的上下文。有同样的问题。

如果您检查目标/测试类文件夹,您可能会注意到上下文不在所需的位置。至少那是我所拥有的。

过去我遇到了很多麻烦(除了手动副本)。如果幸运,请尝试取消标记测试资源并将其标记为测试资源。然后做一个 mvn clean。然后运行你的测试。另外,请确保在您的测试用例配置中,它触发了 Make... 这在测试类中得到了我的上下文。还要验证您的测试类的工作目录是否正确。我有一个案例,它被设置为我保存项目文件的目录......

于 2015-02-19T14:00:58.873 回答