import static org.junit.Assert.assertTrue; // import static : une facilité offerte depuis java5 (pas besoin de mettre le préfixe) import static org.junit.Assert.assertFalse; // import org.junit.Test; /** * Une classe pour faire des tests sur la classe Carte avec JUnit */ public class TestCarte { // un test pour Junit4 c'est une méthode avec l'annotation @Test devant une méthode avec un type de retour void. @Test public void egaleSiIdentiquesEtVisible() { Carte un = new Carte(1); un.toggleVisible(); // on peut stipuler que des choses sont normalement égales (il faut charger de manière statique les Assert si on veut éviter d'avoir à écrire de quelle classe on parle) assertTrue(un.egale(un)); } // le nom du test doit être le plus explicite possible @Test public void egalSiMemeValeurEtVisible() { Carte un = new Carte(1); un.toggleVisible(); Carte unBis = new Carte(1); unBis.toggleVisible(); assertTrue(un.egale(unBis)); } @Test public void pasEgalSiPasMemeValeurEtVisible() { Carte un = new Carte(1); un.toggleVisible(); Carte deux = new Carte(2); deux.toggleVisible(); assertFalse(un.egale(deux)); } // un test pour Junit4 qui cherche à vérifier qu'il y a bien une exception @Test(expected = NullPointerException.class) public void egalPasFaitPourNull(){ Carte bad = null; Carte un = new Carte(1); un.egale(bad); } // un autre test pour Junit4 qui cherche à vérifier qu'il y a bien une exception @Test(expected = IllegalArgumentException.class) public void egalPasFaitPourParametreNonVisible(){ Carte un = new Carte(1); un.toggleVisible(); Carte deux = new Carte(2); un.egale(deux); } // un autre test pour Junit4 qui cherche à vérifier qu'il y a bien une exception @Test(expected = IllegalStateException.class) public void egalPasFaitPourCarteThisNonVisible(){ Carte un = new Carte(1); Carte deux = new Carte(2); deux.toggleVisible(); un.egale(deux); } //Le monde est mal fait et parfois c'est le test qui est faux. //Notez que je suis vraiment méchant car ce test est satisfait au début avec le code proposé... //Moralité : faites des tests très simples et faites vous relire! @Test public void egalTestMalFait(){ Carte un = new Carte(1); un.toggleVisible(); Carte deux = new Carte(2); deux.toggleVisible(); assertFalse(un.egale(deux)); } // si on ne met pas l'annotation arobase test, le test n'est jamais pris en compte. // c'est juste une méthode annexe qui n'est pas appellée comme dans n'importe quelle classe. public void autreTestMalFait(){ assertFalse(true); } }