2010-04-09 5 views
22

ho cercato di caricare il file di configurazione di primavera in src/test/risorse classpath con la seguente classe astratta:primavera - @ContextConfiguration riuscire a caricare file di configurazione in src/test/risorse

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"classpath:/applicationContext.xml"}) 
public class BaseIntegrationTests { 

} 

ho il file applicationContext.xml in src/test/resources ma molla non lo può caricare.

Grazie.

+1

Si prega di utilizzare i blocchi * codice * per mettere da parte pezzi di codice. –

+2

Penso che non è necessario '/' basta usare 'classpath: applicationContext.xml' – ant

+0

Questo soddisfare le mie esigenze: http://stackoverflow.com/questions/10385452/location-of-spring-context-xml –

risposta

22

Per essere precisi, è il contenuto della directory di output prova (target/test-classes) che si trova sul percorso classe, non src/test/resources. Ma le risorse sotto src/test/resources vengono copiate nella directory di output di prova dall'obiettivo resources:testResources (che è associato per impostazione predefinita alla fase process-test-resources).

Detto ciò, il codice sembra corretto e le risorse per il codice sorgente del test dovrebbero essere state copiate dall'IDE o da Maven durante l'esecuzione di test e dovrebbero quindi essere disponibili sul percorso della classe. Quindi ci deve essere qualcos'altro che non va. Posso vedere che la tua classe è una classe base per i test di integrazione. Hai configurato qualcosa di carino nel tuo pom? Puoi mostrarlo?

+0

risorse di test del processo aiutate. Risolto il pom. Grazie! – Azee

+0

la mia risorsa si trova nella directory delle classi di test e posso caricare il file con 'Myclass.class.getClassLoader.getResource ("/my/path ")'. ma non funziona con '@ContextConfiguration (location =" classpath:/my/path ")' – herau

1

Sembra che tu stia utilizzando Maven e stai provando a eseguire i test dall'interno di eclipse. Controllare la cartella buil (target/test-classes/) per applicationContext.xml. Se non è lì, devi prima costruirlo.

5

C'è uno reported bug con l'utilizzo della dipendenza test di primavera (include SpringJUnit4ClassRunner) con le versioni di JUnit> 4.4.

Se si utilizza una versione di JUnit più nuova di 4.4, provare a spostarla verso il basso a 4.4 e verificare se risolve il problema.

0

penso che ho un problema simillar, ho scoperto che la mia domanda-context.xml non era sul bersaglio/test-classi/neighter sul src/test/risorse

16

Provare utilizzando * in modo che può cercare al classpath

@ContextConfiguration(locations={"classpath*:applicationContext.xml"}) 
+2

Cosa fa il '*' rispetto a '{" classpath: applicationContext.xml "'? Cerca qualsiasi profondità del classpath? Non riesco a trovare la documentazione che lo spiega. – markdsievers

+0

@markdsievers Unisce più file in uno invece di selezionare il primo trovato.Vedi: https://stackoverflow.com/a/3294506/344480 – Matthias

3

vostro contesto di applicazione deve essere incluso nel classpath e mettere *:

@ContextConfiguration(locations = { "classpath:*/application-context.xml" }) 
0

Se si utilizza Maven e l'esecuzione di prova c ases from eclipse, progetto tasto destro del mouse> Maven> aggiornamento maven (ALTF5) potrebbe funzionare per voi.

Problemi correlati