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:

  1. Importacions: Importem les classes necessàries de JUnit (@Test i assertEquals).
  2. Classe de Test: Definim una classe de test anomenada CalculadoraTest.
  3. Mètode de Test: Definim un mètode testSuma anotat amb @Test.
  4. Instanciació: Creem una instància de la classe Calculadora.
  5. Execució del mètode: Cridem el mètode suma de la classe Calculadora amb els valors 2 i 3.
  6. 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:

  1. Importacions: Importem les classes necessàries de JUnit (@Test i assertThrows).
  2. Classe de Test: Definim una classe de test anomenada CalculadoraTest.
  3. Mètode de Test: Definim un mètode testDivisioPerZero anotat amb @Test.
  4. Instanciació: Creem una instància de la classe Calculadora.
  5. Assert: Utilitzem assertThrows per verificar que el mètode divisio llença una ArithmeticException 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.

© Copyright 2024. Tots els drets reservats