Mercurial > hg > SpringPlayground
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 |
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 } |