eadl:bloc3:dev_av:tests

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
eadl:bloc3:dev_av:tests [2025/09/17 00:08] – créée jcheroneadl:bloc3:dev_av:tests [2025/09/17 00:41] (Version actuelle) – [SpringBoot-GitHub] jcheron
Ligne 7: Ligne 7:
  
 <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>
  
  
  
  • eadl/bloc3/dev_av/tests.1758060524.txt.gz
  • Dernière modification : il y a 17 heures
  • de jcheron