Vous avez le droit de lire le sujet jusqu'au bout, cela vous donnera une bonne idée de là où on veut aller !
UnitTest est une classe qui permet d'enregistrer un ensemble de tests.
Chaque test est défini par un nom
name ainsi que plusieurs actions.
Une action est une fonction qui ne prend pas d'argument et qui ne renvoie pas de valeur. L'action va être considérée comme réussie si elle ne lève pas d'exception quand on l'exécute et elle sera considérée comme un échec sinon.
Voici un exemple d'utilisation :
var unitTest = new UnitTest();
unitTest.test("test0",
() -> List.of("Picsou").get(0),
() -> List.of("Picsou").get(1)
);
unitTest.test("test1",
() -> ensure(34).equalsTo(37),
() -> ensure(12).not().equalsTo(42)
);
unitTest.test("test2",
() -> ensureCode(() -> 42).returnValue().equalsTo(42),
() -> ensureCode(() -> { throw null; }).throwsAnException(NullPointerException.class)
);
var report = unitTest.runAll();
System.out.println(report);
// Report[names=[test0, test1, test2], errors={test1=[java.lang.AssertionError: 34 is not equal to 37], test2=[], test0=[java.lang.AssertionError: java.lang.IndexOutOfBoundsException: Index: 1 Size: 1]}]
Dans l'exemple ci-dessus, on créé trois tests appelés
test0,
test1 et
test2 avec la
méthode
test(). Chaque test contient deux actions qui permettent d'exécuter le
code de test. La méthode
runAll() exécute tous les tests définis et
stocke le résultat des tests dans un objet
Report. Cet objet contient
une liste des noms des tests (
names) ainsi qu'une table associative pour chaque
test indiquant la liste des erreurs (de type
java.lang.Error) qui se sont produites pour les actions de ce test.
Par exemple, le
test0 a une action qui échoue (la seconde, car l'index 1 n'existe pas dans une liste de taille 1).
La méthode
ensure() prend en paramètre une valeur et on peut ensuite tester si deux valeurs sont égales avec
equalsTo()
ou différentes avec
not().equalsTo().
Dans l'exemple, le
test1 a une action qui échoue (la seconde, car 34 n'est pas égal à 37).
La méthode
ensureCode() prend en paramètre une fonction qui renvoie une valeur et on peut soit tester la valeur de retour comme précédemment grâce à
returnValue ou vérifier si la fonction lève une exception (
checked ou non) avec
throwsAnException().
Dans l'exemple, le
test2 n'a pas d'action qui échoue (dans le second cas, c'est bien l’exception attendue qui est levée).