IntelliJ无法查找测试上下文

时间:2013-05-20 13:46:27

标签: java junit intellij-idea

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

所以事实证明我在查找错误的输出目录。上下文文件不会使其到达输出位置。我怎么去那里?

3 个答案:

答案 0 :(得分:6)

如果这是一个多模块项目,并且您的测试在使用

运行时可以正常工作
mvn test

但是IDEA无法找到配置文件,请尝试:

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

    @ContextConfiguration("file:test/com/d1/d2/service/ServiceTest-context.xml")
    
  4. 这个配置对我有用(并且也被spring-mvc-showcase使用)。

答案 1 :(得分:4)

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

  1. ServiceTest-context.xml放入src/test/resources文件夹。

  2. 将这些行添加到您的pom的build部分:

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

答案 2 :(得分:0)

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

如果检查target / test-classes文件夹,您可能会注意到上下文不在所需的位置。至少那是我所拥有的。

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