annotate spring-boot-playground/src/test/java/de/comline/spring/service/MovieServiceTestWithMockRepo.java @ 18:8504317b9a09

Erweiterung um Sleuth, manuelle Konfiguration von Spring
author Dirk Olmes <dirk.olmes@codedo.de>
date Thu, 17 Sep 2020 09:03:11 +0200
parents 4594ff529ab1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
1 package de.comline.spring.service;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
2
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
3 import static org.hamcrest.MatcherAssert.assertThat;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
4 import static org.hamcrest.Matchers.is;
11
f3f9102ef7c0 Noch ein Test mit der in-memory Datenbank: diesmal wird ein Testdatensatz vorher rein geladen, der dann im Test geholt wird.
Dirk Olmes <dirk.olmes@codedo.de>
parents: 8
diff changeset
5 import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD;
5
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
6
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
7 import org.junit.jupiter.api.DisplayName;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
8 import org.junit.jupiter.api.Test;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
9 import org.springframework.beans.factory.annotation.Autowired;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
10 import org.springframework.boot.test.context.SpringBootTest;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
11 import org.springframework.context.annotation.Bean;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
12 import org.springframework.context.annotation.Configuration;
11
f3f9102ef7c0 Noch ein Test mit der in-memory Datenbank: diesmal wird ein Testdatensatz vorher rein geladen, der dann im Test geholt wird.
Dirk Olmes <dirk.olmes@codedo.de>
parents: 8
diff changeset
13 import org.springframework.test.annotation.DirtiesContext;
5
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
14
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
15 import de.comline.spring.entity.Movie;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
16 import de.comline.spring.repository.MovieRepository;
8
7ce4367b50bc Ein echter Unit Test, der eine in-memory H2 als Teil vom Test startet, das Schema mit liquibase erzeugt und nach dem Test wieder stoppt. Das alles ohne die Web Controller zu starten.
Dirk Olmes <dirk.olmes@codedo.de>
parents: 5
diff changeset
17 import de.comline.spring.service.MovieServiceTestWithMockRepo.TestConfig;
5
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
18
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
19 @SpringBootTest(classes = {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
20 MovieService.class,
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
21 TestConfig.class
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
22 })
11
f3f9102ef7c0 Noch ein Test mit der in-memory Datenbank: diesmal wird ein Testdatensatz vorher rein geladen, der dann im Test geholt wird.
Dirk Olmes <dirk.olmes@codedo.de>
parents: 8
diff changeset
23 @DirtiesContext(classMode = AFTER_EACH_TEST_METHOD)
8
7ce4367b50bc Ein echter Unit Test, der eine in-memory H2 als Teil vom Test startet, das Schema mit liquibase erzeugt und nach dem Test wieder stoppt. Das alles ohne die Web Controller zu starten.
Dirk Olmes <dirk.olmes@codedo.de>
parents: 5
diff changeset
24 public class MovieServiceTestWithMockRepo {
5
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
25 @Autowired
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
26 private MovieService service;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
27
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
28 @Test
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
29 @DisplayName("Test with a mock movie repository")
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
30 void withMockRepository() {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
31 String title = "the-movie-title";
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
32
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
33 Movie movie = service.createMovie(title);
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
34 assertThat(movie.getTitle(), is(title));
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
35 }
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
36
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
37 @Configuration
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
38 static class TestConfig {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
39 @Bean
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
40 MovieRepository createMockRepository() {
14
4594ff529ab1 Noch ein Test ganz ohne Spring hinzugefuegt.
Dirk Olmes <dirk.olmes@codedo.de>
parents: 11
diff changeset
41 return RepositoryMocker.createMockRepository();
5
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
42 }
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
43 }
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
44 }