La solution la plus simple serait de diviser vos tests en deux suites: tests d'intégration et les tests unitaires purs. Ensuite, développez un script ou d'autres moyens automatisés pour déterminer si le serveur est opérationnel et ignorez simplement la suite de tests d'intégration si le serveur est arrêté. Mais si regrouper les tests dans des suites comme ceci n'est pas pratique pour une raison quelconque, voici une alternative:
Vous pouvez créer un Runner personnalisé qui saute des tests si le serveur est indisponible. Vous pouvez programmer le coureur pour déterminer lui-même la disponibilité du serveur ou le déterminer via un processus externe tel qu'un script qui s'exécute avant la phase de test et définit une propriété système sur la JVM que le coureur peut vérifier (par exemple, passer -Dcom.company.testrun.integration=false
comme commande argument de ligne).
Vous pouvez activer votre coureur personnalisé en utilisant l'annotation @RunWith
sur vos classes de test d'intégration et utiliser le coureur intégré pour tous les autres tests afin qu'ils ne soient pas affectés. Alternativement, vous pouvez utiliser votre coureur pour tous les tests et inventer une nouvelle annotation (par exemple @IntegrationTest
) que vous utilisez pour décorer vos méthodes de test d'intégration. En utilisant cette dernière approche, le coureur n'appliquera sa logique de saut que si le serveur est indisponible et la méthode de test a l'annotation spéciale.