2010-07-01 10 views
3

J'utilise Spring 2.5.6 et construit mon projet avec Maven 2.2.1. Nous utilisons PropertyPlaceholderConfigurer beans dans Spring pour charger des propriétés pour configurer des choses comme la base de données. Trucs assez standard. Nous avons également deux ensembles de tests différents: tests unitaires et tests d'intégration. Je voudrais pouvoir utiliser différents fichiers de propriétés pour configurer des choses comme l'URL de base de données différemment pour les deux types de tests différents. Par exemple, je souhaite que les tests unitaires utilisent la base de données localhost et les tests d'intégration pour utiliser la base de données mydatabase.example.com.Spring + Maven: fichiers de propriétés séparés pour les tests unitaires et les tests d'intégration

J'ai essayé plusieurs variantes où je place les fichiers de propriétés dans des sous-répertoires séparés (un pour les tests unitaires et un pour les tests d'intégration). De là, j'ai essayé des choses comme l'utilisation de la balise additionalClasspathElements pour le maven-failsafe-plugin, mais cela ne semblait pas fonctionner du tout. J'ai essayé d'utiliser le maven-antrun-plugin pour copier les fichiers dans target/classes, mais cela n'a pas été déclenché lorsque j'ai couru mvn verify -Dtest=sometest.

J'ai aussi essayé d'utiliser systemPropertyVariables Maven pour définir une propriété appelée buildEnvironment, que je puis essayé de faire référence dans ma définition de bean Spring:

<property name="locations"> 
    <value>classpath:${buildEnvironment}/my-test.properties</value> 
</property> 

Mais le printemps a refusé de résoudre ${buildEnvironment}. À ce stade, je suis à court d'idées. Je suis sûr qu'il y a une façon simple et directe de le faire, mais je ne peux pas le comprendre.

Un conseil serait grandement apprécié.

+0

Avez-vous vu cette question liée avec une réponse différente http://stackoverflow.com/questions/3076466/maven-using-different-spring-properties-for-integration-tests – JoseK

+0

Je ne peux pas non plus obtenir PropertyPlaceholderConfigurer pour voir ressources ajoutées avec additionalClasspathElements. Est-ce que quelqu'un a une idée de pourquoi cela ne fonctionne pas? – Lyle

Répondre

1

Vous pouvez activer le filtrage des ressources et créer des propriétés Maven:

<build> 
    <resources> 
    <resource> 
     <directory>src/test/resources</directory> 
     <filtering>true</filtering> 
    </resource> 
    </resources> 
</build> 

<properties> 
    <buildEnvironment>yourValue</buildEnvironment> 
</properties> 

$ {buildEnvironment} dans votre config de printemps sera alors décidé de "yourValue" (en supposant qu'il est sous src/test/ressources /)

+0

Ce genre de travaux, bien que vous deviez utiliser au lieu de si vous voulez travailler pour les phases de test. Malheureusement, il ne semble pas y avoir moyen de définir différemment la propriété pour les tests d'intégration et les tests unitaires sans utiliser de profils. C'est acceptable, mais pas vraiment ce que j'espérais. :) – organicveggie

Questions connexes