annotate spring-boot-playground/src/test/java/de/comline/spring/service/MovieServiceTestWithInMemoryDatabase.java @ 20:452cfefb0e1e default tip

Einfache Spring Application, die ihre config aus dem Spring Cloud Config Server liest
author Dirk Olmes <dirk.olmes@codedo.de>
date Thu, 17 Sep 2020 17:25:15 +0200
parents f3f9102ef7c0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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:
diff changeset
1 package de.comline.spring.service;
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:
diff changeset
2
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:
diff changeset
3 import static org.hamcrest.MatcherAssert.assertThat;
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:
diff changeset
4 import static org.hamcrest.Matchers.is;
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:
diff changeset
5 import static org.junit.jupiter.api.Assertions.assertTrue;
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
6 import static org.springframework.test.annotation.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:
diff changeset
7
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:
diff changeset
8 import org.junit.jupiter.api.DisplayName;
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:
diff changeset
9 import org.junit.jupiter.api.Test;
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:
diff changeset
10 import org.springframework.beans.factory.annotation.Autowired;
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:
diff changeset
11 import org.springframework.boot.autoconfigure.domain.EntityScan;
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:
diff changeset
12 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
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:
diff changeset
13 import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
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:
diff changeset
14 import org.springframework.boot.test.context.SpringBootTest;
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:
diff changeset
15 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
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
16 import org.springframework.test.annotation.DirtiesContext;
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
17 import org.springframework.test.context.jdbc.Sql;
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:
diff changeset
18
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:
diff changeset
19 import de.comline.spring.entity.Movie;
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:
diff changeset
20
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:
diff changeset
21 @SpringBootTest(classes = {
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:
diff changeset
22 DataSourceAutoConfiguration.class,
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:
diff changeset
23 HibernateJpaAutoConfiguration.class,
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:
diff changeset
24 MovieService.class,
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:
diff changeset
25 })
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
26 @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:
diff changeset
27 @EnableJpaRepositories("de.comline.spring.repository")
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:
diff changeset
28 @EntityScan("de.comline.spring.entity")
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:
diff changeset
29 public class MovieServiceTestWithInMemoryDatabase {
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:
diff changeset
30 @Autowired
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:
diff changeset
31 private MovieService service;
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:
diff changeset
32
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:
diff changeset
33 @Test
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:
diff changeset
34 @DisplayName("Test with a real movie repository")
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:
diff changeset
35 void withRealRepository() {
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:
diff changeset
36 String title = "the-movie-title";
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:
diff changeset
37
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:
diff changeset
38 Movie movie = service.createMovie(title);
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:
diff changeset
39 assertThat(movie.getTitle(), is(title));
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:
diff changeset
40 assertTrue(movie.getId() > 0);
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:
diff changeset
41 }
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
42
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
43 @Test
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
44 @DisplayName("Fetching from a pre-populated database")
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
45 @Sql("/sql/movie.sql")
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
46 public void fetchFromDatabase() {
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
47 assertThat(service.listAllMovies(), is("Shrek,"));
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
48 }
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:
diff changeset
49 }