Podcast
Questions and Answers
Quelle assertion est utilisée pour vérifier si deux objets référencent le même objet?
Quelle assertion est utilisée pour vérifier si deux objets référencent le même objet?
Quelle méthode permet de regrouper différentes assertions pour afficher les échecs en fin de test?
Quelle méthode permet de regrouper différentes assertions pour afficher les échecs en fin de test?
Quel est le but de l'assertion assertThrows() dans JUnit?
Quel est le but de l'assertion assertThrows() dans JUnit?
Quelle méthode est utilisée pour tester si une valeur n'est pas égale à une autre dans JUnit?
Quelle méthode est utilisée pour tester si une valeur n'est pas égale à une autre dans JUnit?
Signup and view all the answers
Quelle assertion échouera si la commande attendue est présente mais dans un ordre différent?
Quelle assertion échouera si la commande attendue est présente mais dans un ordre différent?
Signup and view all the answers
Dans quel package les assertions sont importées avec JUnit 5?
Dans quel package les assertions sont importées avec JUnit 5?
Signup and view all the answers
Quelle méthode devrait être utilisée pour vérifier si une valeur est nulle?
Quelle méthode devrait être utilisée pour vérifier si une valeur est nulle?
Signup and view all the answers
Quelle méthode serait utilisée pour confirmer que la somme de 2 et 2 ne donne pas 3?
Quelle méthode serait utilisée pour confirmer que la somme de 2 et 2 ne donne pas 3?
Signup and view all the answers
Quelle annotation est utilisée pour exécuter une méthode avant chaque test dans JUnit 5?
Quelle annotation est utilisée pour exécuter une méthode avant chaque test dans JUnit 5?
Signup and view all the answers
Quel est le but de la méthode annotée avec @AfterEach dans un cycle de vie de test?
Quel est le but de la méthode annotée avec @AfterEach dans un cycle de vie de test?
Signup and view all the answers
Quel type d'assertion est utilisée pour vérifier que deux listes sont égales dans JUnit 5?
Quel type d'assertion est utilisée pour vérifier que deux listes sont égales dans JUnit 5?
Signup and view all the answers
Quel sera le résultat de l'assertion suivante : assertTimeout(Duration.ofMillis(100), () -> { Thread.sleep(200); return 'result'; }); ?
Quel sera le résultat de l'assertion suivante : assertTimeout(Duration.ofMillis(100), () -> { Thread.sleep(200); return 'result'; }); ?
Signup and view all the answers
Pourquoi est-il nécessaire de créer une classe de test FooTest.java pour chaque classe Foo.java?
Pourquoi est-il nécessaire de créer une classe de test FooTest.java pour chaque classe Foo.java?
Signup and view all the answers
Quelle assertion vérifiera si une exception du type NumberFormatException est lancée?
Quelle assertion vérifiera si une exception du type NumberFormatException est lancée?
Signup and view all the answers
Lors de l'exécution des tests, quelle méthode est appelée après chaque méthode annotée @Test?
Lors de l'exécution des tests, quelle méthode est appelée après chaque méthode annotée @Test?
Signup and view all the answers
Dans quelle situation l'utilisation de assertAll est appropriée?
Dans quelle situation l'utilisation de assertAll est appropriée?
Signup and view all the answers
Quelle annotation est utilisée pour exécuter une méthode avant chaque test dans JUnit 5?
Quelle annotation est utilisée pour exécuter une méthode avant chaque test dans JUnit 5?
Signup and view all the answers
Quel est le principal avantage de JUnit 5 par rapport à JUnit 4?
Quel est le principal avantage de JUnit 5 par rapport à JUnit 4?
Signup and view all the answers
Quelle annotation remplace @Ignore dans JUnit 5?
Quelle annotation remplace @Ignore dans JUnit 5?
Signup and view all the answers
Quelle annotation est utilisée pour exécuter une méthode après toutes les méthodes de test dans JUnit 5?
Quelle annotation est utilisée pour exécuter une méthode après toutes les méthodes de test dans JUnit 5?
Signup and view all the answers
Quel moteur est utilisé dans JUnit 5 pour exécuter des tests écrits avec des versions antérieures de JUnit?
Quel moteur est utilisé dans JUnit 5 pour exécuter des tests écrits avec des versions antérieures de JUnit?
Signup and view all the answers
Quel est le nom de la combinaison du nouveau modèle de programmation et du modèle permettant de rédiger des tests dans JUnit 5?
Quel est le nom de la combinaison du nouveau modèle de programmation et du modèle permettant de rédiger des tests dans JUnit 5?
Signup and view all the answers
Quelle méthode d'assertion teste si deux valeurs sont égales dans JUnit?
Quelle méthode d'assertion teste si deux valeurs sont égales dans JUnit?
Signup and view all the answers
Quelle annotation permet de définir un libellé pour une classe ou méthode de test dans JUnit 5?
Quelle annotation permet de définir un libellé pour une classe ou méthode de test dans JUnit 5?
Signup and view all the answers
Quel annotation permet d'exécuter une méthode spécifiée un certain nombre de fois dans JUnit 5?
Quel annotation permet d'exécuter une méthode spécifiée un certain nombre de fois dans JUnit 5?
Signup and view all the answers
Dans JUnit 5, quel changement a été apporté aux classes de test par rapport à JUnit 4?
Dans JUnit 5, quel changement a été apporté aux classes de test par rapport à JUnit 4?
Signup and view all the answers
Study Notes
Les tests unitaires avec JUnit
- JUnit est un outil pour tester des parties petites d'un logiciel, souvent des méthodes.
- Les tests unitaires doivent être lancés souvent, au minimum à chaque modification de code.
- Ils doivent être rapides et sans interaction avec l'utilisateur.
- Ils sont exécutables automatiquement et écrits dans le même langage de programmation que le logiciel.
Qu'est-ce que JUnit ?
- JUnit est un environnement de test pour Java.
- Il permet de décrire et d'exécuter des tests unitaires.
- Unité = méthode pour le langage Java.
Types d'Environnement de test
- D'autres environnements de test existent pour d'autres langages de programmation comme C++, Python et JavaScript.
- CUnit pour le C
- CppUnit pour le C++
- PyUnit pour le Python
- JsUnit pour JavaScript
JUnit Framework (1/2)
- JUnit est utile pour tester des programmes et des classes Java.
- On le fait au niveau des méthodes et des classes.
- On peut l'utiliser pendant le développement du programme.
- On l'utilise en utilisant des assertions.
JUnit Framework (2/2)
- JUnit est intégré dans l'IDE Eclipse mais il est aussi utilisable indépendamment.
- La version actuelle est 5.9.1 pour Java 8 et versions supérieures.
- Il existe un nouveau module JUnit Jupiter lancé en 2017
- JUnit 5 supporte de nouveau styles de codage Java 8.
Architecture JUnit 5 (1/2)
- JUnit 5 a deux parties : Vintage et Jupiter
- Vintage : Un outil pour exécuter les anciens tests JUnit
- Jupiter : Le modèle de programmation et celui permettant de créer les tests.
- Platform : Les IDE/ outils de build
Architecture JUnit 5 (2/2)
- Platform : un outil permettant de démarrer les tests dans la JVM (Java Virtual Machine), tout en offrant une méthode d'initialisation via la console ou un IDE.
- Jupiter : la combinaison du modèle de programmation nouveau et du modèle permettant de créer les tests.
- Vintage : un outil pour exécuter les anciens tests JUnit 3 ou 4.
Les annotations JUnit 4 vs JUnit 5
- Tableau récapitulatif des annotations JUnit 4 et 5 ainsi que leur définition
- Avant, Après, avant Chaque, Après Chaque, assertions, etc
Les annotations JUnit 4 vs JUnit 5 (2/3 - Exemple)
- Exemples d'implémentation des annotations dans le code Java
- Importations statiques et autres imports.
Les annotations JUnit 4 vs JUnit 5 (3/3 - Exemple)
- Exemple supplémentaires d'utilisation des annotations dans un code Java
Les assertions (1/5)
- L'utilisation des assertEquals() et assertNotEquals() permettent de tester des valeurs égales ou non égales.
- assertSame() et assertNotSame() permettent de tester si l'objet réfère au même objet ou pas.
- assertNull() et assertNotNull() vérifie si un objet pointe vers null ou non.
Les assertions (2/5)
- Les assertions incluent des comparaisons attendu/actuel.
Les assertions (3/5)
- Exemple d'utilisation des assertions avec des arrays.
Les assertions (4/5)
- Il présente la méthode assertAll() pour gérer des assertions groupées qui permettent de rapporter les erreurs ensemble.
- Il représente également la méthode assertTimeout() qui vérifie si le bloc de test s'exécute dans le temps imparti.
Les assertions (5/5)
- Il présente la méthode assertThrows() qui vérifie le lancé d'une exception.
- Il présente également un code exemple sur l'utilisation de iterableEquals.
Cycle de vie des tests (1/2)
- Pour chaque classe, il faut construire une nouvelle classe de tests.
- Dans le constructeur de la classe de test, il faut initialiser le nom de la suite de tests.
- Une méthode setUp() qui s'exécutera avant chaque test.
- Une méthode tearDown() qui s'exécutera après chaque test.
- Une ou plusieures méthodes qui implémentent les tests unitaires.
Cycle de vie des tests (2/2)
- L'ordre d'exécution des Tests.
- Première méthode annotée @ BeforeAll
- Pour chaque méthode annotée @Test, l'ordre indéterminé
- Méthodes annotées @BeforeEach
- Méthodes annotées @Test
- Méthodes annotées @AfterEach
- Méthode annotée @ AfterAll
Développement des tests (1/7)
- Créer un nouveau projet Java
- Créer une classe java dans un package
- Créer une classe de test dans un package
Développement des tests (2/7)
- Utiliser l'IDE Eclipse pour rédiger les tests
Développement des tests (3/7)
- Utiliser Junit pour créer les tests
Développement des tests (4/7)
- Ajouter la bibliothèque JUnit au classpath du projet.
Développement des tests (5/7)
- Génération automatique de la classe de test par l'IDE.
Développement des tests (6/7)
- Exécuter les tests avec le TestRunner.
Développement des tests (7/7)
- Succès ou échec du Test.
Exemple HelloJUnit5 (1/2)
- Exemple de code Java pour la classe à tester.
Exemple HelloJUnit5 (2/2)
- Exemple de code Java pour la classe de test associée à HelloMessage.
Exemple d'intiation 1 : La classe sous test
- Déclaration et méthodes de la classe Compte
Exemple d'intiation 1 : La classe de test
- Déclaration et méthodes de la classe TestCompte
Exemple d'initiation 2
- Déclaration et méthodes de la classe Calculator
Nouveautés avec JUnit 5 (1/5)
- Les annotations @Disabled et @Parameterized Test
Nouveautés avec JUnit 5 (2/5)
- Utiliser @ValueSource pour des valeurs différentes
Nouveautés avec JUnit 5 (3/5)
- Utiliser @CsvSource pour des valeurs à partir d'une source de données
Nouveautés avec JUnit 5 (4/5)
- Utiliser @CsvFileSource pour des données dans un fichier
Nouveautés avec JUnit 5 (5/5)
- Utiliser @RepeatedTest pour répéter un test.
Application (1/2)
- Exemple d'ajout de méthodes à la classe Calculator.
Application (2/2)
- Autres examples d'application.
Tests suites with JUnit (1/3)
- Le concept de suite de test avec JUnit.
Tests suites with JUnit (2/3)
- Utiliser @Suite et @SelectClasses pour spécifier les classes.
Tests suites with JUnit (3/3)
- Exemple de téléchargement de Jars pour utiliser la fonctionnalité de la suite de test.
Timeout avec JUnit 5
- Mise en œuvre de timeout avec JUnit 5
Exécution des tests conditionnelle
- Exécution des tests selon le système d'exploitation.
Ordre des tests
- Spécification de l'ordre des tests à exécuter.
Lien du guide JUnit 5
- Lien direct vers le guide JUnit 5.
Couverture du code
- Définition de la couverture du code et de comment la mesurer
- Outil pour le Java, EclEmma etc
Couverture du code avec EclEmma (1/2)
- Installation du plugin Eclipse EclEmma
Couverture du code avec EclEmma (2/2)
- Exemple de couverture du test avec EclEmma
Conclusion
- Avantage de JUnit 5
Application (Exercice)
- Exemple d'application utilisant la classe LeapYear
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.