Tests d'intégration de printemps avec profil

Dans notre Printemps des applications web, nous utilisons le Printemps bean profils de différencier les trois scénarios de développement, d'intégration et de production. On les utilise pour se connecter à différentes bases de données ou définir d'autres constantes.

À l'aide de Printemps bean profils fonctionne très bien pour l'évolution de l'application web d'environnement.

Le problème que nous avons, c'est quand notre test d'intégration de code de l'évolution des besoins de l'environnement. Dans ces cas, le test d'intégration des charges de l'application de contexte de l'application web. De cette façon, nous n'avons pas à redéfinir les connexions de base de données, des constantes, etc. (en appliquant le principe SEC).

Nous avons configuré nos tests d'intégration comme suit.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ["classpath:applicationContext.xml"])
public class MyTestIT
{
   @Autowired
   @Qualifier("myRemoteURL")  //a value from the web-app's applicationContext.xml
   private String remoteURL;
   ...
 }

Je peux le faire fonctionner localement à l'aide de @ActiveProfilesmais c'est codé en dur et des causes de notre échec des tests sur le serveur de build.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ["classpath:applicationContext.xml"])
@ActiveProfiles("development")
public class MyTestIT
{ ... }

J'ai aussi essayé d'utiliser le @WebAppConfiguration en espérant qu'il pourrait en quelque sorte de l'importation de la spring.profiles.active propriété de Maven, mais qui ne fonctionne pas.

Une autre note, nous avons également besoin de configurer notre code afin que les développeurs peuvent exécuter l'application web, puis exécutez les tests à l'aide de l'Ide, du lanceur de test (ou un autre IDE). C'est beaucoup plus facile pour le débogage des tests d'intégration.

source d'informationauteur David V