2010-05-05 4 views
4

Nous avons un certain nombre de tests d'intégration qui échouent lorsque notre serveur de transfert tombe en panne pour une maintenance hebdomadaire. Lorsque le serveur de transfert est en panne, nous envoyons une réponse spécifique que j'ai pu détecter dans mes tests d'intégration. Quand j'obtiens cette réponse au lieu d'échouer aux tests, je me demande s'il est possible d'ignorer/ignorer ce test même s'il a commencé à fonctionner. Cela permettrait de garder nos rapports d'essai un peu plus propre.Comment ignorer un test dans la méthode de test JUnit elle-même

Quelqu'un a des suggestions?

Répondre

11

Cela fait un moment que j'ai utilisé JUnit mais n'est-il pas un moyen de Assume une condition est-elle vraie? Je pense que cela a une signification différente d'une réussite/échec du test. Votre rapport devrait indiquer que le test n'a pas été exécuté.

Edité à ajouter: Assume class

0

Lors de votre test, vous pouvez tester cette condition avant de procéder à l'opération Assert.whatever. Si le test échoue, retournez simplement de la méthode sans exécuter le reste du code/assert.

0

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.