Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| eadl:bloc3:dev_av:td3 [2025/10/29 00:38] – jcheron | eadl:bloc3:dev_av:td3 [2025/10/29 11:31] (Version actuelle) – [2.3 Concepts clés] jcheron | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== | + | ====== 3 - Tests et CI/CD ====== |
| ===== Objectifs pédagogiques ===== | ===== Objectifs pédagogiques ===== | ||
| Ligne 15: | Ligne 15: | ||
| * Qui a terminé les associations Order/ | * Qui a terminé les associations Order/ | ||
| * Qui a résolu des problèmes N+1 ? | * Qui a résolu des problèmes N+1 ? | ||
| - | | + | * Ceux qui ont fini peuvent commencer les tests, les autres finalisent le TD2 |
| </ | </ | ||
| Ligne 25: | Ligne 25: | ||
| **Objectif :** Séparer les configurations selon l' | **Objectif :** Séparer les configurations selon l' | ||
| </ | </ | ||
| + | |||
| + | === Profiles === | ||
| + | |||
| + | La création de profiles permet de gérer des configurations différentes, | ||
| + | |||
| + | Ajouter la section **profiles** suivante au fichier **pom.xml** | ||
| + | <sxh xml; | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| === Structure des fichiers === | === Structure des fichiers === | ||
| Ligne 42: | Ligne 80: | ||
| spring.application.name=ecommerce-api | spring.application.name=ecommerce-api | ||
| server.port=8080 | server.port=8080 | ||
| + | |||
| + | # Récupération du profile Maven pour def du profile Spring | ||
| + | spring.profiles.active=@activeProfile@ | ||
| # JPA commun | # JPA commun | ||
| Ligne 313: | Ligne 354: | ||
| <sxh java; | <sxh java; | ||
| + | // @ExtendWith : crée les Mocks et les injecte avant chaque test | ||
| + | @ExtendWith(MockitoExtension.class) | ||
| + | |||
| // @Mock : Crée un faux objet (ne fait rien par défaut) | // @Mock : Crée un faux objet (ne fait rien par défaut) | ||
| @Mock | @Mock | ||
| Ligne 920: | Ligne 964: | ||
| - name: Run unit tests | - name: Run unit tests | ||
| - | run: mvn clean test | + | run: mvn clean test -P test |
| - name: Upload test results | - name: Upload test results | ||
| Ligne 947: | Ligne 991: | ||
| - name: Run integration tests | - name: Run integration tests | ||
| - | run: mvn clean verify -DskipUnitTests | + | run: mvn clean verify |
| - name: Upload test results | - name: Upload test results | ||
| Ligne 974: | Ligne 1018: | ||
| - name: Generate coverage report | - name: Generate coverage report | ||
| - | run: mvn clean verify jacoco: | + | run: mvn clean verify jacoco: |
| - name: Upload coverage to Codecov | - name: Upload coverage to Codecov | ||
| Ligne 1008: | Ligne 1052: | ||
| - name: Build with Maven | - name: Build with Maven | ||
| - | run: mvn clean package -DskipTests | + | run: mvn clean package |
| - name: Upload artifact | - name: Upload artifact | ||
| Ligne 1117: | Ligne 1161: | ||
| # Lancer l'app en mode test | # Lancer l'app en mode test | ||
| mvn spring-boot: | mvn spring-boot: | ||
| + | |||
| + | mvn spring-boot: | ||
| Ligne 1199: | Ligne 1245: | ||
| ^ Aspect ^ Test Unitaire ^ Test d' | ^ Aspect ^ Test Unitaire ^ Test d' | ||
| - | | **Vitesse** | ⚡ Très rapide (<10ms) | 🐌 Plus lent (100-500ms) | | + | | **Vitesse** | Très rapide (<10ms) | Plus lent (100-500ms) | |
| | **Base de données** | ❌ Non (mocks) | ✅ Oui (H2 en mémoire) | | | **Base de données** | ❌ Non (mocks) | ✅ Oui (H2 en mémoire) | | ||
| | **Contexte Spring** | ❌ Non | ✅ Oui (toute l'app) | | | **Contexte Spring** | ❌ Non | ✅ Oui (toute l'app) | | ||