Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IntelliJ Cant Find Test Context

I am having issues running unit tests in intelliJ. I have looked through other forums where people have had similar issues but so far I still haven't been able to get it to work. This is the error:

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

In my test I have:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "ServiceTest-context.xml")
public class ServiceImplTest ....

I have obviously verified that the file exists where it is looking for it in the caused by line. I also read a suggestion to check the output directory and I have verified that it exists there as well. Is there anything else that stands out to you? I can run the tests from the command line using ant but I would like to be able to run individual classes rather than modules.

Project:

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

So it turns out I was looking in the wrong directory for the output. The context file does not make it to the output location. How do I get it there?

like image 247
jensengar Avatar asked Dec 26 '22 03:12

jensengar


2 Answers

If this is a multi-module project and your tests do work when run with

mvn test

but config file can't be found by IDEA, try this:

  1. menu: Run -> Edit Configurations...
  2. change "Working Directory" to point at your "Intellij_Project" folder (with a trailing slash).
  3. in test class, change your configuration to:

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

This configuration worked for me (and is also used by spring-mvc-showcase).

like image 133
Michał Rybak Avatar answered Dec 28 '22 18:12

Michał Rybak


Try this solution, it works for me:

  1. Put ServiceTest-context.xml into the src/test/resources folder.

  2. Add these lines to the build section of your pom:

    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources>
    
  3. Reimport Maven project and run your individual tests.

like image 36
Eugene Evdokimov Avatar answered Dec 28 '22 16:12

Eugene Evdokimov