Printemps contexte tests ne pouvez pas trouver config emplacements
J'ai une grande demande répartis sur plusieurs de Printemps bean fichiers xml de définition. Dans mon test de suite je charger manuellement les fichiers XML j'ai besoin de l'aide d'un FileSystemXmlApplicationContext pour effectuer les tests je veux courir. Cela réduit le test mis en place du temps et me permet d'utiliser la même configuration exacte des fichiers qui sont utilisés dans la production.
Maintenant, je suis en train d'utiliser le Printemps transactionnelle test de classes de base qui prennent la config des endroits et charger le contexte pour moi. Pour une raison quelconque, lorsque le contexte de l'application est créé le Printemps ne peut pas trouver les fichiers de configuration. Ceci est source de confusion parce que je lance le test à partir du même répertoire de travail que lorsque je charge la config moi-même à l'aide de FileSystemXmlApplicationContext. Si j'ajoute tous mes config emplacements avec "fichier:" les chemins je l'ai préciser dans mon test sont trouvés, mais tous les fichiers qui sont importés ou référencés par des beans définis dans le fichier de configuration (par exemple, des fichiers de propriétés) ne peut pas être trouvé. Quel est le problème? Puis-je obtenir des tests d'étendre le printemps contexte classes de test sont les mêmes que ceux où j'ai créer le contexte de moi-même?
Par exemple, la création du contexte comme celui-ci fonctionne très bien:
ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[] { "WEB-INF/services-context.xml"})
Si je prolonge AbstractTransactionalDataSourceSpringcontexttests ne pas trouver services-context.xml:
@Override
protected String[] getConfigLocations() {
return new String[] { "WEB-INF/services-context.xml"};
}
Ce trouve les services de contexte, mais la PropertyPlaceholderConfigurer défini dans il ne parvient pas à trouver c'est des fichiers de propriétés.
@Override
protected String[] getConfigLocations() {
return new String[] { "file:WEB-INF/services-context.xml"};
}
OriginalL'auteur Adam B | 2009-06-17
Vous devez vous connecter pour publier un commentaire.
Nous avons mis tous nos Printemps de configuration et les fichiers de propriétés dans le classpath, qui garde les choses simples, il suffit d'étendre nos classes de test à partir d'une classe de base comme:
Ici, les chemins sont tous les chemins dans le classpath.
Si vous ne voulez pas le faire, avez-vous vérifié la façon dont vous faites référence à la propriétés des fichiers dans votre services-context.xml? Je pense que si vous ajouter un fichier: votre contexte de configuration, puis vous aurez également besoin d'ajouter ceci à votre fichier de propriétés de référence. Vous pourriez peut-être juste utiliser un test de Printemps de fichier de config à modifier la définition de votre propriété de l'espace réservé, et les place à la fin de votre liste de contexte fichiers - ses définitions ensuite remplacer celles qui sont définies dans les fichiers antérieurs.
OriginalL'auteur paulcm
En plus impérieuses getConfigLocations j'ai aussi remplacé loadContext et utilisé un fidèle fileSystemXmlApplicationContext.
OriginalL'auteur Adam B
Votre config emplacements sont Uri relatifs, et sera interprété comme tel par la base de la classe de test, avec l'URI être résolu par rapport à l'emplacement de la classe de test lui-même. Essayez d'utiliser pleinement qualifié Uri, ou d'utiliser des URI relatif compte tenu, le cas de la classe de test est.
OriginalL'auteur skaffman
Ne pouvez-vous pas utiliser classpath XML usines, comme ClassPathXmlApplicationContext?
OriginalL'auteur Alex
Une autre solution possible est de dupliquer les
services-config.xml
et renommez-le enservices-config-test.xml
et puis mis sous classpath. La même chose se passe pour le fichier de propriétés.OriginalL'auteur zawhtut
OriginalL'auteur janwen