2010-04-09 8 views
22

J'ai essayé de charger le fichier de configuration de printemps dans src/test/ressources classpath avec la classe abstraite suivante:printemps - @ContextConfiguration ne parviennent pas à charger le fichier de config dans src/test/ressources

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

} 

Je le fichier applicationContext.xml dans src/test/resources mais le ressort ne peut pas le charger.

Merci.

+1

Veuillez utiliser des blocs * code * pour mettre de côté des morceaux de code. –

+2

Je pense que vous n'avez pas besoin de '/' juste utiliser 'classpath: applicationContext.xml' – ant

+0

Cela correspond à mes besoins: http://stackoverflow.com/questions/10385452/location-of-spring-context-xml –

Répondre

22

Pour être précis, il est le contenu du répertoire de sortie de test (target/test-classes) qui se trouve sur le chemin de la classe, et non src/test/resources. Mais les ressources sous src/test/resources sont copiées dans le répertoire de sortie de test par l'objectif resources:testResources (qui est lié par défaut à la phase process-test-resources). Cela dit, votre code semble correct et les ressources pour le code source du test auraient dû être copiées soit par votre IDE, soit par Maven lors de l'exécution des tests et devraient donc être disponibles sur le chemin de la classe. Donc, il doit y avoir quelque chose d'autre qui ne va pas. Je peux voir que votre classe est une classe de base pour les tests d'intégration. Avez-vous configuré quelque chose de fantaisie dans votre pom? Pouvez-vous le montrer?

+0

processus-test-ressources aidées. Correction du pom. Je vous remercie! – Azee

+0

ma ressource se trouve dans le répertoire test-classes et je peux charger le fichier avec 'Myclass.class.getClassLoader.getResource ("/my/path ")'. mais ne fonctionne pas avec '@ContextConfiguration (location =" classpath:/my/path ")' – herau

1

Vous semblez utiliser maven et essayer d'exécuter les tests depuis eclipse. Vérifiez le dossier de construction (target/test-classes/) pour applicationContext.xml. Si ce n'est pas le cas, vous devrez d'abord construire.

5

Il existe un reported bug avec l'utilisation de la dépendance du test de ressort (inclut SpringJUnit4ClassRunner) avec les versions de JUnit> 4.4.

Si vous utilisez une version de JUnit plus récente que la version 4.4, essayez de la faire descendre à 4.4 et voyez si cela résout votre problème.

0

Je pense avoir un problème simillar, j'ai découvert que ma demande-context.xml n'a pas été atteint/test-classes/neighter sur src/test/ressources

16

essai en utilisant * afin qu'il peut chercher à votre classpath

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

Que fait le '*' par rapport à '{" classpath: applicationContext.xml "'? Chercher n'importe quelle profondeur du classpath? Je ne peux pas trouver la documentation expliquant cela. – markdsievers

+0

@markdsievers Il fusionne plusieurs fichiers en un seul au lieu de choisir le premier trouvé.Voir: https://stackoverflow.com/a/3294506/344480 – Matthias

3

votre contexte d'application doit être inclus dans classpath et de mettre *:

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

Si vous utilisez Maven et d'exécution des tests c ases from eclipse, projet clic droit> Maven> Maven mise à jour (ALTF5) pourrait fonctionner pour vous.