Why can't my test inherit its ContextConfiguration location from its parent?

java, junit, spring, spring-test

Solution

Remove the `@ContextConfiguration(inheritLocations = true)` on the child class. `inheritLocations` is set to true by default.

By adding the `@ContextConfiguration(inheritLocations = true)` annotation without specifying a locations ,you are telling to Spring to extended the list of resource locations by adding the default context which is `/org/my/ChildTest-context.xml`.

Try with something like this :

package org.my;

@RunWith(SpringJUnit4ClassRunner.class)
public class ChildTest extends BaseTest {

    @Inject
    private Foo myFoo;

    @Test
    public void myTest() {
          ...
    }
}

Problem

In the interest of DRY, I want to define my ContextConfiguration in a parent class and have all my test classes inherit it, like so: Parent class: ``` package org.my; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "/org/my/Tests-context.xml") public abstract class BaseTest { } ``` Child class: ``` package org.my; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(inheritLocations = true) public class ChildTest extends BaseTest { @Inject private Foo myFoo; @Test public void myTest() { ... } } ``` According to the ContextConfiguration docs I should be able to inherit the parent's location, but I can't get it to work. Spring is still looking for a file in the default location (`/org/my/ChildTest-context.xml`) and barfs when it can't find it. I've tried the following with no luck: - Making the parent class concrete - Adding a no-op test to the parent class - adding an injected member to the parent class as well - combinations of the above I'm on spring-test 3.0.7 and JUnit 4.8.2.

Original source