2013-01-18 1 views
7

Im Interesse der DRY möchte ich meine ContextConfiguration in einer übergeordneten Klasse definieren und haben alle meine Testklassen es erben, etwa so:Warum kann mein Test seinen ContextConfiguration-Standort nicht von seinem übergeordneten Element erben?

Übergeordnete Klasse:

package org.my; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = "/org/my/Tests-context.xml") 
public abstract class BaseTest { 

} 

Kinderklasse:

package org.my; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(inheritLocations = true) 
public class ChildTest extends BaseTest { 

    @Inject 
    private Foo myFoo; 

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

Nach der ContextConfiguration docs sollte ich in der Lage sein, den Speicherort der Eltern zu erben, aber ich kann es nicht zum Funktionieren bringen. Der Frühling ist noch auf der Suche nach einer Datei im Standardverzeichnis (/org/my/ChildTest-context.xml) und barfs wenn sie nicht finden können. Ich habe folgendes ohne Glück versucht:

  • die übergeordnete Klasse zu machen Beton
  • einen Test no-op Hinzufügen zu der übergeordneten Klasse
  • eines injizierten Mitglied der übergeordneten Klasse Zugabe als auch
  • Kombinationen der oben genannten

Ich bin auf Frühling-Test 3.0.7 und JUnit 4.8.2.

Antwort

11

die @ContextConfiguration(inheritLocations = true) auf das Kind Klasse entfernen. inheritLocations ist standardmäßig auf true festgelegt.

Durch Hinzufügen der @ContextConfiguration(inheritLocations = true) Annotation ohne Angabe eines Speicherorts weisen Sie Spring an, die Liste der Ressourcenspeicherorte zu erweitern, indem Sie den Standardkontext /org/my/ChildTest-context.xml hinzufügen.

Versuchen Sie, mit so etwas wie dieses:

package org.my; 

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

    @Inject 
    private Foo myFoo; 

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

Das war es! Das erinnert mich daran, dass ich deine andere Antwort akzeptieren muss. Du bist offiziell der SO MVP für diese Woche :-) –

Verwandte Themen