Salta el contingut
 

Maven - Execució de les proves

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Maven - Execució de les proves

Execució de les proves unitàries

Maven defineix la tasca test, que compila i realitza diferents comprovacions sobre el projecte, com executar els tests unitaris.

mvn test
Goals en mvn test

S'executaran tots els goals definits abans de la tasca indicada.

mvn help:describe
Goal Plugin Descripció
resources:resources maven-resources-plugin Copia els recursos de l'aplicació
compiler:compile maven-compiler-plugin Compila el codi font
resources:testResources maven-resources-plugin Copia els recursos de les proves
compiler:testCompile maven-compiler-plugin Compila el codi font de les proves
surefire:test maven-surefire-plugin Executa les proves unitàries
pom.xml
<project>
    ...
    <properties>
        <skip.ut>false</skip.ut> <!-- (1)! -->
    </properties>

    <dependencies>
        ...
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <!-- JUnit 5 requires Surefire version 2.22.0 or higher -->
                <version>3.5.2</version>
                <configuration>
                    <skipTests>${skip.ut}</skipTests>
                </configuration>
            </plugin>
            ...
        </plugins>
    </build>
</project>
  1. La propietat skip.ut permet saltar l'execució de les proves. Per defecte, el valor és false.

Execució de les proves d'integració

Maven defineix la tasca verify, que compila i realitza diferents comprovacions sobre el projecte, com executar els tests d'integració.

mvn verify [-Dskip.ut=true] # (1)!
  1. La propietat skip.ut permet saltar l'execució de les proves unitàries.
Goals en mvn verify

S'executaran tots els goals definits abans de la tasca indicada.

mvn help:describe
Goal Plugin Descripció
resources:resources maven-resources-plugin Copia els recursos de l'aplicació
compiler:compile maven-compiler-plugin Compila el codi font
resources:testResources maven-resources-plugin Copia els recursos de les proves
compiler:testCompile maven-compiler-plugin Compila el codi font de les proves
surefire:test maven-surefire-plugin Executa les proves unitàries
package maven-jar-plugin Empaqueta l'aplicació
failsafe:integration-test maven-failsafe-plugin Executa les proves d'integració
pom.xml
<project>
    ...
    <dependencies>
        ...
    </dependencies>

    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>3.5.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
    </build>
</project>

Automatització de l'execució de les proves

L'execució de les proves pot automatitzar-se mitjançant GitHub Actions a les Pull Request, per comprovar que la incorporació d'una funcionalitat és correcta.

.github/workflows/test.yml
name: Test Java with Maven

on:
  push:
    branches: [ "main" ]
  pull_request:
    # Tipus d'events sobre la pull request
    types: [ 'opened', 'edited', 'reopened', 'synchronize', 'ready_for_review' ]
    branches: [ "main", "development" ]
  workflow_dispatch:

jobs:
  unit-test:
    if: github.event_name == 'push' || github.event.pull_request.draft == false

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK 22
      uses: actions/setup-java@v3
      with:
        java-version: '22'
        distribution: 'temurin'
        cache: maven
    - name: Run Unit Tests with Maven
      run: mvn --batch-mode test -Dcheckstyle.skip=true

  integration-test:
    needs: unit-test
    if: github.event_name == 'push' || github.event.pull_request.draft == false

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK 22
      uses: actions/setup-java@v3
      with:
        java-version: '22'
        distribution: 'temurin'
        cache: maven
    - name: Run Integration Tests with Maven
      run: mvn --batch-mode verify -Dskip.ut=true -Dcheckstyle.skip=true

Requerir execució de les proves en les Pull Request

A més, es poden configurar les regles de protecció de les branques (Rulesets) per requerir que les comprovacions siguen satisfactòries per poder incorporar els canvis:

Regles d'execució de les proves

Figura 1. Regles d'execució de les proves

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.