Dernière modification : Dec 08 , 2024

Démarrer avec JUnit

Qu'est ce que JUnit ?

JUnit est une framework pour écrire et exécuter des tests unitaires

JUnit 4 était composé d'un unique Jar.

Désormais JUnit 5 a été décomposé

  • JUNIT Platform
  • JUNIT Jupiter
  • JUNIT Vintage

Les étapes importantes

Le test en 4 phases

(setup, exercise, verify, teardown)

  • Préparer le SUT ( System under test ) aussi appelé Fixture.
  • Réaliser le test
  • Vérifier le résultat
  • Nettoyer l'environnement

Préparer le test

JUNIT 4


class MyFirstTest {
  @Before
  public void beforeTest() {

  }

  @BeforeClass
  public static void beforeAllTestsFromTheClass() {

  }
}

JUNIT 5


class MyFirstTest {
  @BeforeEach
  public void beforeTest() {

  }

  @BeforeAll
  public static void beforeAllTestsFromTheClass() {

  }
}

Réaliser le test

Comment créer un test ?

  • Créer une méthode ( obligatoirement publique en JUNIT 4 )
  • La nommer avec le nom de la méthode testée suffixée de test ( non obligatoire ou tout autre nom approprié)
  • Ecrire l'action à exécuter ( par exemple en se basant sur l'approche GIVEN/WHEN/THEN)
  • Le nom de l'annotation est la même en JUNIT 4 et 5, seul le package est différent.

JUNIT 4/5

class MyFirstTest {
  /** FIXTURE SETUP **/
  ../..

  @Test
  public void testMaMethode() {
    // WHEN

    // THEN

    // AND
  }
}

Vérifier le test

Comment vérifier l'exécution d'un test

  • Il faut provoquer l'échec du test
  • Plusieurs facons sont possibles
    1. Lancer une exception (bof)
    2. Afficher un message dans les logs ( personne ne le lira)
    3. Utiliser un framework d'assertions comme celui de JUnit ou d'AssertJ

JUNIT 4

class MyFirstTest {
  @Test
  public void testAddition() {
    int res = Calcul.add(2,4);

    Assert.assertEquals(6, res); // paresseux
    Assert.assertEquals("2+4 font 6", 6, res); // avec message
    assertEquals("2+4 font 6", 6, res); // import static
    Assert.assertThat(res).as("2+4 font 6").isEquals(6);
  }
}

JUNIT 5

class MyFirstTest {
  @Test
  public void testAddition() {
    int res = Calcul.add(2,4);
    
    Assertions.assertEquals(6, res); // paresseux
    Assertions.assertEquals(6, res, "2+4 font 6"); // avec message
    assertEquals("2+4 font 6", 6, res); // import static
    Assert.assertThat(res).as("2+4 font 6").isEquals(6);
  }
}

Nettoyer après le test

Comment nettoyer un test

  • Soit nettoyer à la fin de l'exécution de tous les tests
  • Ou à la fin de chaque test

JUNIT 4 @Before

class MyFirstTest {
  // Fixture
  Calcul calcul;

  @Before
  public void beforeEach() {
    calcul = new Calcul();
  }
  
  @Test
  public void testAddition() {
    int res = calcul.add(2,4);
    ../
  }

  @After
  public void tearDown() {
    calcul = null
  }
}

JUNIT 4 @BeforeClass

class MyFirstTest {
  // Fixture
  static Calcul calcul;

  @BeforeClass
  public static void beforeEach() {
    calcul = new Calcul();
  }
  
  @Test
  public void testAddition() {
    int res = calcul.add(2,4);
    ../
  }

  @AfterClass
  public static void tearDown() {
    calcul = null
  }
}

JUNIT 5

class MyFirstTest {
  // Fixture
  Calcul calcul;

  @BeforeEach
  public void beforeEach() {
    calcul = new Calcul();
  }
  
  @Test
  public void testAddition() {
    int res = calcul.add(2,4);
    ../
  }

  @AfterEach
  void tearDown() {
    calcul = null
  }
}

JUNIT 5 @BeforeClass

class MyFirstTest {
  // Fixture
  static Calcul calcul;

  @BeforeAll
  public static void beforeEach() {
    calcul = new Calcul();
  }
  
  @Test
  public void testAddition() {
    int res = calcul.add(2,4);
    ../
  }

  @AfterAll
  public static void tearDown() {
    calcul = null
  }
}

Démarrer avec JUnit

Created by Sylvain Leroy