Files
2026-06-14 15:22:36 +02:00

3.0 KiB

mylibrary — back-end Java (méthode BDD)

Back-end du projet 2026-DEV-BUT3. Reproduit, en Java pur, le cœur métier de l'API consommée par le front React my-library/.

Méthode

Conformément au cours maintenanceApplicativeCours1.pdf (Behavior-Driven Development), pour chaque comportement on :

  1. Écrit le scénario attendu (en Gherkin / .feature ou en @DisplayName JUnit)
  2. Écrit le test qui le vérifie
  3. Implémente le code qui fait passer le test

Structure (calquée sur le module customer fourni par le prof)

src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/
├─ customer/        Module fourni par l'enseignant (intact)
│  ├─ CustomerInfo.java   record d'entrée
│  ├─ CustomerDTO.java    DTO de sortie
│  ├─ entity/             Customer (objet métier, règles fidélité)
│  ├─ exception/          Exceptions métier
│  ├─ converter/          Mapping Info <-> entity <-> DTO
│  ├─ validator/          Règles de validation
│  ├─ repository/         Stockage en mémoire (List)
│  └─ usecase/            Cas d'usage (orchestration)
└─ book/             Module développé en miroir (notre travail)
   └─ … (mêmes sous-paquets, même découpage)

src/test/java/.../mylibrary/
├─ customer/         Tests JUnit fournis par l'enseignant
├─ book/             Tests JUnit que nous avons écrits
└─ features/
   ├─ RunCucumberTest.java         (du prof, intact)
   ├─ client/CustomerSteps.java    (du prof, intact)
   ├─ book/BookSteps.java          (notre travail)
   └─ resources/features/
      ├─ client.feature            (du prof, intact)
      └─ book.feature              (notre travail)

Dépendances

Strictement les mêmes que dans le template du prof :

  • JUnit 5 (jupiter-api, params, engine + platform-suite, platform-engine, platform-launcher)
  • Mockito (core, junit-jupiter)
  • Cucumber (cucumber-java, cucumber-junit-platform-engine)
  • Lombok

Build & test

Pré-requis : JDK 21 + Maven 3.9+

mvn -f mylibrary test

Cette commande exécute :

  • les tests unitaires JUnit (entity, validator, converter, repository, usecase, exceptions)
  • les scénarios Cucumber (client.feature + book.feature) via RunCucumberTest

Périmètre couvert

Conformément à la consigne (« reproduire le strict nécessaire pour démontrer la maîtrise »), l'API se limite aux deux domaines présents dans le swagger qui structurent l'app React :

  • Catalogue (book) : enregistrer, consulter par ISBN, lister tous les livres, refuser ISBN dupliqué, refuser un livre invalide, gérer le stock.
  • Comptes clients (customer) : enregistrer, consulter par téléphone, mettre à jour, supprimer, ajouter / retirer des points de fidélité (module fourni).

L'exposition HTTP réelle utilisée par les développeurs front est l'API du prof (mylibrary-0.0.1-SNAPSHOT.jar) ; ce module sert à démontrer la maîtrise de la conception métier en BDD/TDD.