Introducció
La integració contínua (CI) és una pràctica de desenvolupament de programari on els desenvolupadors integren el seu codi en un repositori compartit diverses vegades al dia. Cada integració és verificada per una build automatitzada, incloent tests automatitzats, per detectar errors tan aviat com sigui possible. JUnit és una eina clau en aquest procés, ja que permet executar tests automatitzats de manera eficient.
Beneficis de la Integració Contínua
- Detecció Primerenca d'Errors: Els errors es detecten ràpidament, facilitant la seva correcció.
- Millora de la Qualitat del Codi: Els tests automatitzats asseguren que el codi compleix amb els requisits especificats.
- Reducció del Temps de Feedback: Els desenvolupadors reben feedback immediat sobre els canvis introduïts.
- Facilita la Col·laboració: Els equips poden treballar de manera més coordinada i eficient.
Configuració de la Integració Contínua amb JUnit
- Selecció d'una Eina de CI
Hi ha diverses eines de CI disponibles, com ara Jenkins, Travis CI, CircleCI, GitLab CI, entre d'altres. En aquest exemple, utilitzarem Jenkins.
- Instal·lació de Jenkins
-
Descarregar Jenkins:
- Visita la pàgina oficial de Jenkins i descarrega la versió adequada per al teu sistema operatiu.
-
Instal·lar Jenkins:
- Segueix les instruccions d'instal·lació proporcionades a la pàgina de descàrrega.
-
Iniciar Jenkins:
- Un cop instal·lat, inicia Jenkins i accedeix a la interfície web a través de
http://localhost:8080
.
- Un cop instal·lat, inicia Jenkins i accedeix a la interfície web a través de
- Configuració del Projecte a Jenkins
-
Crear un Nou Projecte:
- A la pàgina principal de Jenkins, selecciona "New Item" i crea un nou projecte de tipus "Freestyle project".
-
Configurar el Repositori de Codi:
- A la secció "Source Code Management", selecciona "Git" i proporciona l'URL del teu repositori.
-
Configurar els Triggers de Build:
- A la secció "Build Triggers", selecciona "Poll SCM" i especifica la freqüència amb què Jenkins ha de verificar els canvis al repositori (per exemple,
H/5 * * * *
per verificar cada 5 minuts).
- A la secció "Build Triggers", selecciona "Poll SCM" i especifica la freqüència amb què Jenkins ha de verificar els canvis al repositori (per exemple,
-
Afegir un Pas de Build per Executar els Tests:
- A la secció "Build", afegeix un pas de build de tipus "Invoke Gradle script" o "Invoke Ant" (segons l'eina de build que utilitzis).
- Especifica la tasca de build que executarà els tests, per exemple,
test
per a Gradle otest
per a Ant.
- Executar i Verificar els Tests
-
Executar el Build:
- Des de la pàgina del projecte a Jenkins, selecciona "Build Now" per iniciar una build manualment.
-
Verificar els Resultats:
- Un cop completada la build, revisa els resultats dels tests a la secció "Console Output" i "Test Result".
Exemple de Configuració de Build amb Gradle
// build.gradle plugins { id 'java' } repositories { mavenCentral() } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter:5.7.0' } test { useJUnitPlatform() }
Exemple de Configuració de Build amb Maven
<!-- pom.xml --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>example-project</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.7.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.7.0</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> </plugin> </plugins> </build> </project>
Exercici Pràctic
Objectiu
Configurar un projecte de CI amb Jenkins per executar tests de JUnit automàticament.
Passos
- Instal·la Jenkins i crea un nou projecte.
- Configura el repositori de codi i els triggers de build.
- Afegeix un pas de build per executar els tests amb Gradle o Maven.
- Executa una build manualment i verifica els resultats dels tests.
Solució
-
Instal·lació de Jenkins:
- Segueix les instruccions proporcionades anteriorment.
-
Creació i Configuració del Projecte:
- Crea un nou projecte de tipus "Freestyle project".
- Configura el repositori de codi i els triggers de build.
-
Configuració del Pas de Build:
- Afegeix un pas de build per executar els tests amb Gradle o Maven, segons el teu projecte.
-
Execució i Verificació:
- Executa una build manualment i revisa els resultats dels tests a la secció "Console Output" i "Test Result".
Conclusió
La integració contínua amb JUnit és una pràctica essencial per assegurar la qualitat i la fiabilitat del codi. Mitjançant l'ús d'eines com Jenkins, és possible automatitzar el procés de build i test, proporcionant feedback immediat als desenvolupadors i facilitant la detecció primerenca d'errors. Amb aquesta configuració, el teu equip podrà treballar de manera més eficient i col·laborativa, millorant la qualitat del producte final.
Curs de JUnit
Mòdul 1: Introducció a JUnit
Mòdul 2: Anotacions Bàsiques de JUnit
- Entenent @Test
- Utilitzant @Before i @After
- Utilitzant @BeforeClass i @AfterClass
- Ignorant Tests amb @Ignore
Mòdul 3: Assertions a JUnit
Mòdul 4: Tests Parametritzats
- Introducció als Tests Parametritzats
- Creant Tests Parametritzats
- Utilitzant @ParameterizedTest
- Tests Parametritzats Personalitzats
Mòdul 5: Suites de Test
Mòdul 6: Mocking amb JUnit
Mòdul 7: Funcions Avançades de JUnit
Mòdul 8: Millors Pràctiques i Consells
- Escrivint Tests Efectius
- Organitzant el Codi de Test
- Desenvolupament Guiat per Tests (TDD)
- Integració Contínua amb JUnit