|
| ||||||||||||||||||||||||||||||||||||||||||
Maven: execució de les provesJoan Puigcerver Ibáñez Maven: execució de les proves¶Maven permet executar les proves des de la terminal, sense dependre de l'IDE. Això fa possible automatitzar-ne l'execució, per exemple, en un flux de treball de CI/CD. Execució de les proves unitàries (
|
| 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 |
Les proves unitàries les executa el plugin maven-surefire-plugin, que es configura en el fitxer 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>
- La propietat
skip.utpermet ometre l'execució de les proves unitàries. Per defecte, el seu valor ésfalse.
Execució de les proves d'integració (mvn verify)¶
Maven defineix la fase verify, que compila el projecte i hi fa diferents comprovacions, com
executar les proves d'integració.
- La propietat
skip.utpermet ometre l'execució de les proves unitàries.
Goals de mvn verify
S'executen tots els goals definits fins a la fase indicada. Es poden consultar amb l'ordre següent:
| 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ó |
Les proves d'integració les executa el plugin maven-failsafe-plugin, que es configura en el fitxer 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 es pot automatitzar mitjançant GitHub Actions – GitHub en les pull requests, per comprovar que la incorporació d'una funcionalitat és correcta.
El flux de treball següent executa primer les proves unitàries i, si passen, les proves d'integració:
name: Test Java with Maven
on:
push:
branches: [ "main" ]
pull_request:
# Tipus d'esdeveniments de 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 21
uses: actions/setup-java@v3
with:
java-version: '21'
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 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Run Integration Tests with Maven
run: mvn --batch-mode verify -Dskip.ut=true -Dcheckstyle.skip=true
Requerir l'execució de les proves en les pull requests¶
A més, es poden configurar les regles de protecció de les branques (rulesets) perquè calga superar les comprovacions abans d'incorporar els canvis (Figura 1).
Figura 1. Regles d'execució de les proves.
Documentació oficial: About rulesets – GitHub
