J'ai une bibliothèque Java relativement petite qui implémente quelques douzaines de beans (pas de base de données ou d'interface graphique). J'ai créé un fichier de configuration Spring Bean que d'autres projets Java utilisent pour injecter mes beans dans leurs affaires. Je tente maintenant pour la première fois d'utiliser Spring Test pour injecter certains de ces beans dans mes classes de test junit (plutôt que de simplement les instancier). Je le fais en partie pour apprendre Spring Test et en partie pour forcer les tests à utiliser le même fichier de configuration de bean que je fournis pour d'autres. Dans la documentation Spring, il est dit que j'ai besoin de créer un contexte d'application en utilisant la classe "TestContext" qui vient avec Spring. Je crois que cela devrait être fait dans un fichier XML de printemps que je référence via l'annotation @ContextConfiguration sur ma classe de test.Comment créer TestContext pour Spring Test?
@ContextConfiguration({"/test-applicationContext.xml"})
Cependant, il n'y a aucun indice quant à ce qu'il faut mettre dans le fichier! Lorsque j'exécute mes tests depuis Eclipse, il est impossible de dire "Impossible de charger le contexte de l'application" .... bien sûr.
Mise à jour:
Voici test applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<description>Holds application context for testing of the domain module.</description>
<!-- Imports the uuid generator bean definitions -->
<import resource="resources/domain-uuid.xml"/>
</beans>
Mon répertoire de projet est comme ceci:
domain/
src/
main/
java/
resources/
test/
java/
resources/ (location of test-applicationContext.xml)
Juste pour le plaisir que j'ai aussi essayé de construire à partir de la ligne de commande mvn via "mvn propre test" et j'ai eu les erreurs suivantes qui peuvent être mon vrai problème:
package org.springframework.test.context does not exist
package org.springframework.test.context.junit4 does not exist
cannot find symbol
symbol: class ContextConfiguration
@ContextConfiguration({"/resources/test-applicationContext.xml"})
cannot find symbol
symbol: class SpringJUnit4ClassRunner
@RunWith(SpringJUnit4ClassRunner.class)
Désolé - Je n'utilise ni JNDI ni DAO. Je ne sais pas où créer le textContext! Vous dites "fichier de contexte de l'application" - qu'est-ce que c'est? – HDave
Le "fichier de contexte d'application" est juste votre fichier XML de configuration Spring. Celui qui a un élément de niveau supérieur. Vous pouvez le mettre directement sous WEB-INF, ou vous pouvez le mettre sur le classpath, comme sous src/test/resource comme vous l'avez dit dans l'un de vos autres commentaires. Il vous sera peut-être utile d'ajouter votre structure de répertoire (les parties pertinentes) à votre message d'origine et de montrer ce que contient votre fichier test-applicationContext.xml. –
OK - Je pense que je comprends. Je n'ai besoin de spécifier TestContext nulle part. Le printemps "sait" en quelque sorte (comment?). Le problème est que Spring ne trouve pas mon fichier de configuration. – HDave