| Prochaine révision | Révision précédente |
| eadl:bloc3:dev_av:tests [2025/09/17 00:08] – créée jcheron | eadl:bloc3:dev_av:tests [2025/09/17 00:41] (Version actuelle) – [SpringBoot-GitHub] jcheron |
|---|
| |
| <sxh xml;gutter:false> | <sxh xml;gutter:false> |
| | <dependency> |
| | <groupId>org.jetbrains.kotlin</groupId> |
| | <artifactId>kotlin-test-junit5</artifactId> |
| | <scope>test</scope> |
| | </dependency> |
| | </sxh> |
| |
| | Exécution des tests en local : |
| | |
| | <sxh bash;gutter:false> |
| | mvn -B -U -ntp test |
| | </sxh> |
| | |
| | === CI GitHub actions === |
| | |
| | A mettre dans ''.github/workflows/ci-tests.yml'' : |
| | Vérifiez : |
| | * La version de java (17 ?) |
| | * Le nom de la branche principale (master/main ?) |
| | |
| | <sxh yml;gutter:false> |
| | name: CI • Tests (Maven) |
| | |
| | on: |
| | push: |
| | branches: [ master ] |
| | pull_request: |
| | branches: [ master ] |
| | |
| | concurrency: |
| | group: ci-tests-${{ github.ref }} |
| | cancel-in-progress: true |
| | |
| | jobs: |
| | test: |
| | runs-on: ubuntu-latest |
| | strategy: |
| | matrix: |
| | java: [ '17' ] |
| | env: |
| | MAVEN_OPTS: -XX:+UseParallelGC -Xmx1g -Djava.awt.headless=true |
| | MAVEN_ARGS: "" |
| | |
| | steps: |
| | - name: Checkout |
| | uses: actions/checkout@v4 |
| | |
| | - name: Set up Temurin JDK |
| | uses: actions/setup-java@v4 |
| | with: |
| | distribution: temurin |
| | java-version: ${{ matrix.java }} |
| | cache: maven |
| | |
| | - name: Build & test |
| | run: mvn -B -U -ntp $MAVEN_ARGS verify |
| | |
| | - name: Upload test and coverage reports |
| | if: always() |
| | uses: actions/upload-artifact@v4 |
| | with: |
| | name: test-reports-java-${{ matrix.java }} |
| | path: | |
| | **/target/surefire-reports/** |
| | **/target/failsafe-reports/** |
| | **/target/site/jacoco/** |
| | retention-days: 7 |
| | |
| | </sxh> |
| | |
| | Le workflow : |
| | * Se déclenche sur push et pull_request vers master. |
| | * Installe JDK 17, restaure le cache Maven, compile et lance les tests (verify). |
| | * Archive les rapports (téléchargeables depuis l’onglet “Actions” de Github). |
| | |
| | === Couverture JaCoCo === |
| | Ajoute la configuration JaCoCo+Surefire dans **pom.xml** : |
| | |
| | Ajouter les numéros de version : |
| | |
| | <sxh xml;gutter:false> |
| | <properties> |
| | <java.version>17</java.version> |
| | <kotlin.version>1.9.25</kotlin.version> |
| | <maven.compiler.source>${java.version}</maven.compiler.source> |
| | <maven.compiler.target>${java.version}</maven.compiler.target> |
| | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | <maven.surefire.plugin.version>3.2.5</maven.surefire.plugin.version> |
| | <jacoco.version>0.8.12</jacoco.version> |
| | </properties> |
| | </sxh> |
| | Ajouter les 2 plugins Maven suivants : |
| | |
| | <sxh xml;gutter:false> |
| | <build> |
| | <plugins> |
| | <plugin> |
| | <groupId>org.apache.maven.plugins</groupId> |
| | <artifactId>maven-surefire-plugin</artifactId> |
| | <version>${maven.surefire.plugin.version}</version> |
| | <configuration> |
| | <useModulePath>false</useModulePath> |
| | </configuration> |
| | </plugin> |
| | |
| | <plugin> |
| | <groupId>org.jacoco</groupId> |
| | <artifactId>jacoco-maven-plugin</artifactId> |
| | <version>${jacoco.version}</version> |
| | <executions> |
| | <execution> |
| | <goals> |
| | <goal>prepare-agent</goal> |
| | </goals> |
| | </execution> |
| | <execution> |
| | <id>report</id> |
| | <phase>test</phase> |
| | <goals> |
| | <goal>report</goal> |
| | </goals> |
| | </execution> |
| | </executions> |
| | </plugin> |
| | </plugins> |
| | </build> |
| | </sxh> |
| | |
| | Le rapport de couverture (téléchargeable via actions) : |
| | |
| | <html><div class="imageB"></html> |
| | {{:eadl:bloc3:dev_av:pasted:20250917-002448.png}} |
| | <html></div></html> |
| | |
| | === Seuil de couverture === |
| | Ajout d'une exécution jacoco:check pour échouer sous le seuil de 80% de couverture : |
| | |
| | <sxh xml;gutter:false> |
| | <execution> |
| | <id>check</id> |
| | <goals><goal>check</goal></goals> |
| | <configuration> |
| | <rules> |
| | <rule> |
| | <element>BUNDLE</element> |
| | <limits> |
| | <limit> |
| | <counter>INSTRUCTION</counter> |
| | <value>COVEREDRATIO</value> |
| | <minimum>0.80</minimum> |
| | </limit> |
| | </limits> |
| | </rule> |
| | </rules> |
| | </configuration> |
| | </execution> |
| | </sxh> |
| | |
| | === Bonnes pratiques CI === |
| | * Protéger la branche master : |
| | * Settings → Branches → Add rule → exiger le job “CI • Tests (Maven)” avant merge. |
| | * Déclencheurs: |
| | * Pour limiter le bruit: exécuter seulement sur PR ou sur changements Java/Maven: |
| | |
| | <sxh yml;gutter:false> |
| | on: |
| | pull_request: |
| | branches: [ master ] |
| | paths: [ 'src/**', 'pom.xml', '.github/workflows/**' ] |
| </sxh> | </sxh> |
| |
| |
| |