Introducció
JUnit és un marc de treball (framework) de proves unitàries per a la plataforma Java. És àmpliament utilitzat per desenvolupar i executar tests automatitzats, ajudant els desenvolupadors a assegurar-se que el seu codi funciona correctament. JUnit facilita la creació de tests repetibles i proporciona una estructura clara per organitzar i executar aquests tests.
Objectius d'aquest tema
- Entendre què és JUnit i per què és important.
- Conèixer els beneficis de les proves unitàries.
- Familiaritzar-se amb la història i l'evolució de JUnit.
Què és JUnit?
JUnit és un framework de proves unitàries per a Java que permet als desenvolupadors escriure i executar tests automatitzats. Les proves unitàries són petites proves que verifiquen el comportament d'una unitat de codi, com ara una funció o un mètode, de manera aïllada.
Característiques clau de JUnit
- Automatització de proves: Permet executar tests de manera automàtica, sense intervenció manual.
- Repetibilitat: Els tests es poden executar tantes vegades com sigui necessari, assegurant que els canvis en el codi no introdueixin errors.
- Integració amb IDEs: JUnit s'integra fàcilment amb entorns de desenvolupament integrats (IDEs) com Eclipse, IntelliJ IDEA i NetBeans.
- Suport per a assertions: Proporciona una varietat d'assertions per verificar els resultats esperats.
- Anotacions: Utilitza anotacions per definir mètodes de test, configuració i neteja.
Beneficis de les proves unitàries
- Detecció primerenca d'errors: Les proves unitàries ajuden a identificar errors en les primeres etapes del desenvolupament.
- Facilitat de manteniment: Amb proves unitàries, és més fàcil refactoritzar el codi sense introduir errors.
- Documentació del codi: Els tests poden servir com a documentació viva del comportament del codi.
- Confiança en el codi: Proporciona confiança als desenvolupadors que el seu codi funciona com s'espera.
Història i evolució de JUnit
JUnit va ser creat per Kent Beck i Erich Gamma a finals dels anys 90. Des de llavors, ha evolucionat significativament, amb diverses versions que han afegit noves funcionalitats i millores.
Versions de JUnit
Versió | Característiques clau |
---|---|
JUnit 3 | Introducció de la classe TestCase i el mètode setUp i tearDown . |
JUnit 4 | Introducció d'anotacions com @Test , @Before , @After , @BeforeClass , @AfterClass . |
JUnit 5 | Modularitat, noves anotacions, suport per a proves dinàmiques i millores en la integració amb altres eines. |
Exemple pràctic
A continuació, es mostra un exemple senzill d'un test amb JUnit:
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class CalculatorTest { @Test public void testAddition() { Calculator calculator = new Calculator(); int result = calculator.add(2, 3); assertEquals(5, result, "2 + 3 hauria de ser 5"); } }
Explicació del codi
- Importacions: Importem les classes necessàries de JUnit.
- Classe de test:
CalculatorTest
és la classe que conté els nostres tests. - Mètode de test:
testAddition
és un mètode de test anotat amb@Test
. - Assertions: Utilitzem
assertEquals
per verificar que el resultat de la suma és correcte.
Exercici pràctic
Exercici
Crea una classe Calculator
amb un mètode add
que sumi dos nombres. Escriu un test per verificar que el mètode add
funciona correctament.
Solució
public class Calculator { public int add(int a, int b) { return a + b; } } import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class CalculatorTest { @Test public void testAddition() { Calculator calculator = new Calculator(); int result = calculator.add(2, 3); assertEquals(5, result, "2 + 3 hauria de ser 5"); } }
Conclusió
En aquest tema, hem après què és JUnit, els seus beneficis i la seva història. També hem vist un exemple pràctic de com escriure un test amb JUnit. En el proper tema, veurem com configurar JUnit en el nostre entorn de desenvolupament.
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