eadl:bloc3:dev_av:td3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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/28 20:24] – [Bonnes pratiques à retenir] jcheroneadl:bloc3:dev_av:td3 [2025/10/29 11:31] (Version actuelle) – [2.3 Concepts clés] jcheron
Ligne 1: Ligne 1:
-====== Séance 3 - Tests et CI/CD (4h) ======+====== 3 - Tests et CI/CD ======
  
 ===== Objectifs pédagogiques ===== ===== Objectifs pédagogiques =====
Ligne 15: Ligne 15:
   * Qui a terminé les associations Order/OrderItem/User ?   * Qui a terminé les associations Order/OrderItem/User ?
   * Qui a résolu des problèmes N+1 ?   * Qui a résolu des problèmes N+1 ?
-  * **Décision :** Ceux qui ont fini peuvent commencer les tests, les autres finalisent le TD2+  * Ceux qui ont fini peuvent commencer les tests, les autres finalisent le TD2
 </WRAP> </WRAP>
  
Ligne 25: Ligne 25:
 **Objectif :** Séparer les configurations selon l'environnement (dev, test, prod) **Objectif :** Séparer les configurations selon l'environnement (dev, test, prod)
 </WRAP> </WRAP>
 +
 +=== Profiles ===
 +
 +La création de profiles permet de gérer des configurations différentes, et des fichiers de configuration spécifiques à chaque profile.
 +
 +Ajouter la section **profiles** suivante au fichier **pom.xml**
 +<sxh xml;title:pom.xml>
 +    <profiles>
 +        <profile>
 +            <id>dev</id>
 +            <activation>
 +                <activeByDefault>true</activeByDefault>
 +            </activation>
 +            <properties>
 +                <activeProfile>dev</activeProfile>
 +            </properties>
 +        </profile>
 +        <profile>
 +            <id>prod</id>
 +            <properties>
 +                <activeProfile>prod</activeProfile>
 +            </properties>
 +            <dependencies>
 +                <dependency>
 +                    <groupId>org.postgresql</groupId>
 +                    <artifactId>postgresql</artifactId>
 +                    <scope>runtime</scope>
 +                </dependency>
 +            </dependencies>            
 +        </profile>
 +        <profile>
 +            <id>test</id>
 +            <properties>
 +                <activeProfile>test</activeProfile>
 +            </properties>
 +        </profile>
 +    </profiles>
 +</sxh>
  
 === 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 124: Ligne 165:
 # Via ligne de commande # Via ligne de commande
 mvn spring-boot:run -Dspring-boot.run.profiles=dev mvn spring-boot:run -Dspring-boot.run.profiles=dev
 +
 +# Avec profil maven
 +mvn spring-boot:run -P dev
 </sxh> </sxh>
  
Ligne 310: Ligne 354:
  
 <sxh java;gutter:false> <sxh java;gutter:false>
 +// @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 917: 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 944: Ligne 991:
  
       - name: Run integration tests       - name: Run integration tests
-        run: mvn clean verify -DskipUnitTests+        run: mvn clean verify -P test -DskipUnitTests
  
       - name: Upload test results       - name: Upload test results
Ligne 971: Ligne 1018:
  
       - name: Generate coverage report       - name: Generate coverage report
-        run: mvn clean verify jacoco:report+        run: mvn clean verify jacoco:report -P test
  
       - name: Upload coverage to Codecov       - name: Upload coverage to Codecov
Ligne 1005: Ligne 1052:
  
       - name: Build with Maven       - name: Build with Maven
-        run: mvn clean package -DskipTests+        run: mvn clean package -P prod -DskipTests
  
       - name: Upload artifact       - name: Upload artifact
Ligne 1114: Ligne 1161:
 # Lancer l'app en mode test # Lancer l'app en mode test
 mvn spring-boot:run -Dspring-boot.run.profiles=test mvn spring-boot:run -Dspring-boot.run.profiles=test
 +
 +mvn spring-boot:run -P test
  
  
Ligne 1196: Ligne 1245:
  
 ^ Aspect ^ Test Unitaire ^ Test d'Intégration ^ ^ Aspect ^ Test Unitaire ^ Test d'Intégration ^
-| **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) |
  • eadl/bloc3/dev_av/td3.1761679481.txt.gz
  • Dernière modification : il y a 5 jours
  • de jcheron