2 votes

Exécuter les tests d'intégration uniquement si un profil de ressort spécifique est défini.

Nous avons plusieurs classes de test dans notre application Spring Boot. Certaines de ces classes contiennent des tests d'intégration, d'autres des tests unitaires. Cela signifie que si j'autorise (par exemple avec maven) l'exécution de tous les tests, tous les tests de toutes les classes seront exécutés.

Ce que j'aimerais obtenir, c'est que les tests d'intégration ne soient exécutés que si un profil Spring spécifique est défini, par exemple via application.yml. J'aimerais par exemple annoter la classe de test entière pour définir que les tests de cette classe ne sont exécutés que si le profil Spring spécifié est défini. S'il n'est pas défini, ces tests sont ignorés.

Que peut-on faire pour y parvenir ? Notez qu'il y a beaucoup de questions sur les tests et les profils spring sur stack overflow. Mais la plupart d'entre elles indiquent comment définir des configurations dans les tests spécifiques aux profils spring. Ce n'est pas ce que je recherche. Je voudrais exécuter ou ignorer les tests.

2voto

Mis94 Points 935

Je ne sais pas exactement comment vous voulez le faire, mais voici un moyen, si vous utilisez junit, d'ignorer conditionnellement certains tests à l'exécution en utilisant simplement une propriété de configuration :

application.properties :

test.enabled=true

puis dans votre code de test vous pouvez utiliser org.junit.Assume et une propriété comme la suivante :

@Value("${test.enabled}")
private Boolean testEnabled;

@Test
public void test {
    org.junit.Assume.assumeTrue(testEnabled);
    // your test code
}

Maintenant, si vous définissez la propriété test.enabled à true, le test sera exécuté, sinon il sera ignoré.

Source : Ignorer conditionnellement les tests dans JUnit 4

1voto

Amir Kadić Points 71

Avec JUnit 5, vous pouvez utiliser un environnement @Autowired pour vérifier si un profil est actif @BeforeEach test is run : Assumptions.assumeTrue(Arrays.asList(this.environment.getActiveProfiles()).contains("integration"));

Cette vérification porte sur un profil nommé "integration" et fonctionne quelle que soit la manière dont le profil a été défini (propriété du système, variable d'environnement, application.yml, etc.)

Si le profil n'est pas actif, le test sera ignoré, ce qui est similaire à l'utilisation de l'annotation @Disabled.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X