6.5. Ignorer des tests

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));
}
Jenkins vous permet de voir combien de temps les tests ont mis pour s'exécuter

Figure 6.9. Jenkins vous permet de voir combien de temps les tests ont mis pour s'exécuter


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.

Jenkins affiche les tests ignorés en jaune

Figure 6.10. Jenkins affiche les tests ignorés en jaune