Tests
Documents
- Spring Boot features : Testing
- 2020 Guide to Testing with Spring Boot Starter Test
- 2020 Testing your JSON serialization with @JsonTest
- 2019 Spring WebTestClient for efficient testing of your REST API
- 2019 Pour les débutants
- 2019 Exemple hiérarchie des tests
- 2017 description des annotations !
Vidéos
- 2017 Josh Long
- 2017 Sannidhi Jalukar
- 2016 Phil Webb → Ne pas utiliser !
@DataJpaTest
Pour les tests JPA (autoconfigure h2 si c'est dans le classpath)
@Autowired private TestEntityManager entityManager;
Pour tester la persistence des données (fait un find par l'id, éventuellement généré) :
User user = this.entityManager.persistFlushFind(new User("donald"));
Test d'un composant SANS Spring Framework
Sur la classe, mettre l'annotation @RunWith(MockitoJUnitRunner.class)
Déclarer le composant sous test
private UnderTestComponent cmp;
Mocker les dépendances du composant sous test
@Mock private Dependency1 dependency1;
Créer le UnderTestComponent dans le before
@Before public void setUp() throws Exception { cmp = new UnderTestComponent(dependency1); }
Ensuite, écrire les tests :
when(dependency1.ssth(anyString())).thenReturn(...); Val val = cmp.ceQueJeTeste(...); assertThat(val).isEqualTo(...); verify(linkRepository).findByFullUrl(anyString());
Test de comportements asynchrones
Exemple, il faut attendre que qqch soit processé par une queue…
Si on fait en synchrone (je pousse dans la queue, je relis), ça marche un coup sur deux…
Solution : utiliser await ! Qui fait du polling (par défaut, pendant 10 secondes).
Awaitility.await().until(...);
see :