Skip to content

Quelques librairies de tests

SQLite est réputé pour avoir une proportion importante de tests.

JUnit

Framework de test Java permet de tester son code via des assertions. Explorons le projet de démarrage fourni par le guide officiel

Exercices

  1. Ecrire un test unitaire StringTest qui test ces méthodes de la classe String: toUpperCase(), toLowerCase() et charAt().
  2. Exo 2 de cette série
    • Ignorer les CE invalides b5 et b6
  3. Exercice 2 de cette série qui nécessite d'abord de faire d'abord ces exercices: partie1, partie2
  4. Cet exo de librecours.net. Le code est à traduire du JS vers du Java.
  5. Cet exercice de librecours.net. Le code est à traduire du JS vers du Java.
  6. Ce TD qui provient de labri. Le makefile est l'équivalent de maven pour nous. Faire la question 3 avec cette commande à la place de l'outil proposé mvn surefire-report:report.
Quelques
  1. RàS
  2. Fonctions corriger / modifier: checkDay, checkYear, checkDayLimits, renommer ou enlever maxDayOfMonth(month), testFebruaryValidLimitDates, testValidLimitDates

Tests dans un projet Spring MVC

API REST sans base de données

  • Générer un projet Spring avec initializr, en choisissant les dépendances suivantes: Spring Web et Spring Boot DevTools.
  • Ouvrir le projet sur VSCode
  • Créer un @RestController avec deux routes en @GET et en @POST, un modèle et un service qui gère une liste statique en mémoire.
    • Je vous propose d'utiliser comme modèle une classe Manga avec trois champs ISBN, name et nbPages
  • Lancer votre serveur et vérifier qu'il fonctionne avec la bonne commande (avec gradle ./gradlew bootRun, avec maven ./mvnw springboot:run) ou depuis votre IDE
  • Ecrire des tests unitaires pour le service
  • Spring propose deux façons de tester le contrôleur (en d'autres termes l'API REST).
    • En lançant un serveur web (avec la stack HTTP complète) via la classe TestRestTemplate
    • En lançant un serveur bouchonné (on n'a pas la stack HTTP complète) via la classe MockMVC
  • Ecrire des tests pour le contrôleur

API REST avec une base de données

Nous allons utiliser la BDD H2 pour sa simplicité car c'est une BDD relationnelle (SQL) qui ne nécessite pas de serveur et réside en mémoire (RAM) par défaut.

  • Générer un projet Spring avec le créateur en ligne en choisissant les dépendances suivantes: Spring Data JPA, H2 Database, Spring Boot DevTool et Spring Web.
  • Ouvrir le projet sur VSCode
  • Créer une classe "Model" avec l'annotation @Entity et les annotations @Id et @GeneratedValue sur sa clé primaire.
  • Créer une interface xxxxRepository: JpaRepository<Product, Long> où xxx est le nom de votre modèle
  • Créer un contrôleur avec les routes en @GET, @POST, PUT et DELETE, un modèle et un service qui gère communique avec votre repository

Liens et références

  • http://deptinfo.cnam.fr/~graffion/UES/GLG101/tps/java/index.html
  • https://gayerie.dev/docs/testing/test/junit.html
  • https://github.com/mjeanroy/exercices-java/blob/master/exercices-junit.txt