En aquest tema, explorarem l'anotació @Test
de JUnit, que és la base per escriure tests en aquesta biblioteca. Aprendrem com utilitzar-la per definir mètodes de test i veurem exemples pràctics per entendre millor el seu funcionament.
Què és l'anotació @Test?
L'anotació @Test
s'utilitza per marcar un mètode com un mètode de test en JUnit. Quan un mètode està anotat amb @Test
, JUnit sap que ha de ser executat com un test. Aquesta anotació és fonamental per a la creació de tests automatitzats.
Característiques de l'anotació @Test:
- Identificació de mètodes de test: Qualsevol mètode anotat amb
@Test
serà reconegut i executat per JUnit com un test. - Execució automàtica: JUnit executa automàticament tots els mètodes anotats amb
@Test
quan es corre la suite de tests. - Gestió d'excepcions: Permet especificar excepcions esperades que el mètode de test hauria de llençar.
Exemple bàsic d'ús de @Test
A continuació, veurem un exemple bàsic d'un mètode de test utilitzant l'anotació @Test
.
import org.junit.Test; import static org.junit.Assert.assertEquals; public class CalculadoraTest { @Test public void testSuma() { Calculadora calculadora = new Calculadora(); int resultat = calculadora.suma(2, 3); assertEquals(5, resultat); } }
Explicació del codi:
- Importacions: Importem les classes necessàries de JUnit (
@Test
iassertEquals
). - Classe de Test: Definim una classe de test anomenada
CalculadoraTest
. - Mètode de Test: Definim un mètode
testSuma
anotat amb@Test
. - Instanciació: Creem una instància de la classe
Calculadora
. - Execució del mètode: Cridem el mètode
suma
de la classeCalculadora
amb els valors 2 i 3. - Assert: Utilitzem
assertEquals
per verificar que el resultat de la suma és 5.
Gestió d'Excepcions amb @Test
L'anotació @Test
també permet especificar excepcions esperades. Això és útil per verificar que un mètode llença una excepció en situacions específiques.
Exemple de test amb excepció esperada:
import org.junit.Test; import static org.junit.Assert.assertThrows; public class CalculadoraTest { @Test public void testDivisioPerZero() { Calculadora calculadora = new Calculadora(); assertThrows(ArithmeticException.class, () -> { calculadora.divisio(10, 0); }); } }
Explicació del codi:
- Importacions: Importem les classes necessàries de JUnit (
@Test
iassertThrows
). - Classe de Test: Definim una classe de test anomenada
CalculadoraTest
. - Mètode de Test: Definim un mètode
testDivisioPerZero
anotat amb@Test
. - Instanciació: Creem una instància de la classe
Calculadora
. - Assert: Utilitzem
assertThrows
per verificar que el mètodedivisio
llença unaArithmeticException
quan es divideix per zero.
Exercicis Pràctics
Exercici 1: Crear un Test per a la Multiplicació
Crea un mètode de test per verificar que el mètode multiplica
de la classe Calculadora
funciona correctament.
// Solució import org.junit.Test; import static org.junit.Assert.assertEquals; public class CalculadoraTest { @Test public void testMultiplica() { Calculadora calculadora = new Calculadora(); int resultat = calculadora.multiplica(4, 5); assertEquals(20, resultat); } }
Exercici 2: Test per a Excepció Personalitzada
Crea un mètode de test per verificar que el mètode resta
de la classe Calculadora
llença una IllegalArgumentException
quan el segon paràmetre és més gran que el primer.
// Solució import org.junit.Test; import static org.junit.Assert.assertThrows; public class CalculadoraTest { @Test public void testRestaExcepcio() { Calculadora calculadora = new Calculadora(); assertThrows(IllegalArgumentException.class, () -> { calculadora.resta(3, 5); }); } }
Errors Comuns i Consells
Errors Comuns:
- Oblidar l'anotació @Test: Sense l'anotació
@Test
, JUnit no reconeixerà el mètode com un test. - No utilitzar asserts: Un mètode de test sense asserts no verifica res. Assegura't d'utilitzar asserts per validar els resultats.
- No gestionar excepcions esperades: Si esperes que un mètode llençi una excepció, utilitza
assertThrows
per verificar-ho.
Consells:
- Noms descriptius: Utilitza noms descriptius per als mètodes de test per facilitar la comprensió del que estan provant.
- Tests petits i enfocats: Cada mètode de test hauria de provar una única funcionalitat o cas d'ús per mantenir els tests simples i fàcils de mantenir.
Conclusió
En aquest tema, hem après què és l'anotació @Test
i com utilitzar-la per crear mètodes de test en JUnit. Hem vist exemples pràctics i hem practicat amb exercicis per reforçar els conceptes apresos. Ara estem preparats per avançar cap a les anotacions @Before
i @After
en el següent tema.
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