Structure d'un test JUnit

Objectifs du chapitre :

  • Comprendre la structure de base d'un test JUnit.
  • Apprendre à utiliser les annotations de base (@Test, @Before, @After, @BeforeClass, @AfterClass).
  • Découvrir les méthodes de test et les assertions courantes.

5.1 Structure de base d'un test JUnit

Un test JUnit est constitué de classes de test qui contiennent des méthodes de test. Chaque méthode de test est marquée avec l'annotation @Test. Les tests JUnit peuvent également inclure des méthodes de configuration qui s'exécutent avant ou après les méthodes de test, grâce aux annotations telles que @Before, @After, @BeforeClass et @AfterClass.

Exemple de classe de test JUnit 4 :

import org.junit.Before;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class ExampleTest {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        // Code exécuté une seule fois avant tous les tests
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        // Code exécuté une seule fois après tous les tests
    }

    @Before
    public void setUp() throws Exception {
        // Code exécuté avant chaque test
    }

    @After
    public void tearDown() throws Exception {
        // Code exécuté après chaque test
    }

    @Test
    public void testAddition() {
        assertEquals(2, 1 + 1);
    }
}

Exemple de classe de test JUnit 5 :

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class ExampleTest {

    @BeforeAll
    public static void setUpBeforeClass() throws Exception {
        // Code exécuté une seule fois avant tous les tests
    }

    @AfterAll
    public static void tearDownAfterClass() throws Exception {
        // Code exécuté une seule fois après tous les tests
    }

    @BeforeEach
    public void setUp() throws Exception {
        // Code exécuté avant chaque test
    }

    @AfterEach
    public void tearDown() throws Exception {
        // Code exécuté après chaque test
    }

    @Test
    public void testAddition() {
        assertEquals(2, 1 + 1);
    }
}

5.2 Annotations de base

1. @Test :

  • Utilisée pour indiquer qu'une méthode est une méthode de test.
  • Cette méthode sera exécutée par le framework de test JUnit.

JUnit 4 :

@Test
public void testMethod() {
    // Test code here
}

JUnit 5 :

@Test
void testMethod() {
    // Test code here
}

2. @Before et @BeforeEach :

  • Utilisée pour exécuter une méthode avant chaque méthode de test.
  • @Before est utilisée dans JUnit 4, et @BeforeEach dans JUnit 5.

JUnit 4 :

@Before
public void setUp() {
    // Setup code here
}

JUnit 5 :

@BeforeEach
void setUp() {
    // Setup code here
}

3. @After et @AfterEach :

  • Utilisée pour exécuter une méthode après chaque méthode de test.
  • @After est utilisée dans JUnit 4, et @AfterEach dans JUnit 5.

JUnit 4 :

@After
public void tearDown() {
    // Teardown code here
}

JUnit 5 :

@AfterEach
void tearDown() {
    // Teardown code here
}

4. @BeforeClass et @BeforeAll :

  • Utilisée pour exécuter une méthode une seule fois avant tous les tests.
  • @BeforeClass est utilisée dans JUnit 4, et @BeforeAll dans JUnit 5.
  • Ces méthodes doivent être statiques.

JUnit 4 :

@BeforeClass
public static void setUpBeforeClass() {
    // Setup code here
}

JUnit 5 :

@BeforeAll
static void setUpBeforeClass() {
    // Setup code here
}

5. @AfterClass et @AfterAll :

  • Utilisée pour exécuter une méthode une seule fois après tous les tests.
  • @AfterClass est utilisée dans JUnit 4, et @AfterAll dans JUnit 5.
  • Ces méthodes doivent être statiques.

JUnit 4 :

@AfterClass
public static void tearDownAfterClass() {
    // Teardown code here
}

JUnit 5 :

@AfterAll
static void tearDownAfterClass() {
    // Teardown code here
}

5.3 Méthodes de test et assertions

Les assertions sont utilisées dans les tests pour vérifier que les conditions spécifiées sont vraies. Si une assertion échoue, le test est considéré comme ayant échoué.

Assertions courantes :

  1. assertEquals :
    • Vérifie que deux valeurs sont égales.
    • Syntaxe : assertEquals(expected, actual)

JUnit 4 et JUnit 5 :

assertEquals(2, 1 + 1);
  1. assertTrue :
    • Vérifie qu'une condition est vraie.
    • Syntaxe : assertTrue(condition)

JUnit 4 et JUnit 5 :

assertTrue(1 + 1 == 2);
  1. assertFalse :
    • Vérifie qu'une condition est fausse.
    • Syntaxe : assertFalse(condition)

JUnit 4 et JUnit 5 :

assertFalse(1 + 1 == 3);
  1. assertNull :
    • Vérifie qu'un objet est null.
    • Syntaxe : assertNull(object)

JUnit 4 et JUnit 5 :

assertNull(null);
  1. assertNotNull :
    • Vérifie qu'un objet n'est pas null.
    • Syntaxe : assertNotNull(object)

JUnit 4 et JUnit 5 :

assertNotNull(new Object());
  1. assertArrayEquals :
    • Vérifie que deux tableaux sont égaux.
    • Syntaxe : assertArrayEquals(expectedArray, actualArray)

JUnit 4 et JUnit 5 :

assertArrayEquals(new int[]{1, 2, 3}, new int[]{1, 2, 3});

Résumé du chapitre :

  • La structure de base d'un test JUnit inclut des méthodes de test annotées avec @Test, ainsi que des méthodes de configuration annotées avec @Before, @After, @BeforeClass, @AfterClass (JUnit 4) et @BeforeEach, @AfterEach, @BeforeAll, @AfterAll (JUnit 5).
  • Les annotations de base sont essentielles pour configurer et exécuter les tests correctement.
  • Les assertions permettent de vérifier les conditions et d'assurer que le code fonctionne comme prévu.
Modifié le: mardi 16 juillet 2024, 14:22