Jenkins fait la distinction entre les tests échoués et les tests
ignorés. Les tests ignorés sont ceux qui ont été désactivés, par exemple en
utilisant l'annotation @Ignore
dans JUnit
4:
@Ignore("Pending more details from the BA") @Test public void cashWithdrawalShouldDeductSumFromBalance() throws Exception { Account account = new Account(); account.makeDeposit(100); account.makeCashWithdraw(60); assertThat(account.getBalance(), is(40)); }
Ignorer des tests est parfaitement légitime dans certaines
circonstances, comme lors de la mise en place d'un test d'acceptation
automatisé, ou un test technique de plus haut niveau, en attente pendant
que vous implémentez les couches inférieures. Dans de tels cas, vous ne
voulez pas être distrait par le test d'acceptation échoué, mais vous ne
voulez pas non plus oublier que le test existe. Utiliser des techniques
telles que l'annotation @Ignore
est
certainement meilleur que de commenter simplement le test ou de le renommer
(dans JUnit 3), car cela permet à Jenkins de garder un oeil sur les tests
ignorés pour vous.
Avec TestNG, vous pouvez aussi ignorer des tests, en utilisant la
propriété enabled
:
@Test(enabled=false) public void cashWithdrawalShouldDeductSumFromBalance() throws Exception { Account account = new Account(); account.makeDeposit(100); account.makeCashWithdraw(60); assertThat(account.getBalance(), is(40)); }
Avec TestNG, vous pouvez aussi définir des dépendances entre les tests, de façon à ce que certains tests s'exécuteront après qu'un autre test ou un groupe de tests se soit exécuté, comme illustré ici:
@Test public void serverStartedOk() {...} @Test(dependsOnMethods = { "serverStartedOk" }) public void whenAUserLogsOnWithACorrectUsernameAndPasswordTheHomePageIsDisplayed(){..}
Ici, si le premier test (serverStartedOk()
) échoue, le test suivant sera
ignoré.
Dans tous ces cas, Jenkins marquera les tests qui n'ont pas été exécutés en jaune, à la fois dans la tendance de résultats de test globale, et dans les détails du test (voir Figure 6.10, “Jenkins affiche les tests ignorés en jaune”). Les tests ignorés ne sont pas aussi mauvais que des tests échoués, mais il est important de ne pas avoir l'habitude de les négliger. Les tests ignorés sont comme des branches dans un système de gestion de version: un test doit être ignoré pour une raison particulière, avec une idée claire de la date à laquelle il sera réactivé. Un test ignoré qui reste ignoré pendant une période trop longue ne sent pas bon.