Show Menu
Cheatography

JUnit 5 v2 Cheat Sheet (DRAFT) by

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Création d'un projet JUnit5 avec IntelliJ

* créer un projet
* placer le curseur sur le nom de la classe à tester
* ALT + ENTREE => une fenêtre s'affiche, choisir "­nouveau test"
* remplir, et cocher la case "­imp­orter JUnit5­"

Test simple

<im­por­ts>


class FirstJ­Uni­t5Test {

 ­ ­@Test

 ­ void myFirs­tTe­st(){

 ­ ­ ­ ­ass­ert­Equ­als­(2,­1+1­,"1+1 <> 2 ??");

 ­ }  

}

Annota­tions

@Befor­eAll, @AfterAll
@Befor­eEach, @AfterAll
@Disab­led­("test non effectué, ce texte est affich­é")
@Disabled peut décorer des méthodes ou des classes
@Displ­ayN­ame­("texte affiché lors des tests")
@Repea­ted­Tes­t(10)

Tests paramétrés

@ParameterizedTest
@ValueSource(strings = { "Hello", "World" })
void testWithParams(String argument) {
  assertNotNull(argument);
}
//possibilité d'exécuter un test plusieurs fois avec des arguments différents. A la place de assertNotNull il pourrait y avoir un appel de méthode, et/ou un bloc.

Tests paramé­trés, type des paramètres

types de base
String, int, long, or double
enums
voir doc
méthode qui renvoie une collection
voir doc

Assert­ions, assert­Throws

@Test
  void exceptionTesting() {
    Throwable exception = assertThrows(MyException.class, () -> {
      throw new MyException("a message");
    });
    assertEquals("a message", exception.getMessage());
}
//à la place du throw nex MyException, mettre la méthode à tester et susceptible de déclencher une exception
 

assert­Timeout

@Test
void timeoutNotExceededWithResult() {
  int vrai=assertTimeout(ofMinutes(2),() ->{
     return 10 ;
  });
  assertEquals(10, vrai);
}
// The assertion succeeds, and returns the supplied object.*

assert­Timeout + appel de méthode

@Test
  void timeoutNotExceededWithMethod() {
     String ret = assertTimeout(ofMinutes(2),MyClass::greeting);
     assertEquals("hello world!", ret);

// The assertion invokes a method reference and returns an object.

assert­Tim­eout, arrêt forcé

assert­Tim­eou­tPr­eem­ptively
utilis­ation comme assert­Timeout
 
arrêt et échec du test si timeout atteint

Assertions

messages d'erreur
assert­Equals (1,2,"non égaux") --> le message est après
asserts & lambdas
Assert­Tru­e(f­alse,() -> "­message évalué dynami­que­men­t")
assertAll
assert­All­("te­xte­", () -> code avec asserts,() -> code avec asserts ); etc...
 
même contexte pour les blocs

Tests groupés

@Nested
définit, à l'inté­rieur d'une classe de tests, une 2e classe de tests avec ses propres @BeforeAll etc...