Spring Boot, testowanie repozytorium

Odpowiedz Nowy wątek
2019-07-09 13:27
0

Cześć. Ostatnimi czasy postanowiłem się nauczyć używać Springa. Przez większość czasu szło bez problemów, dopóki nie zachciało mi się przetestować mojego repozytorium. Otóż udało mi się napisać taką klasę (nie zwracajcie uwagi na metodę testową) :

@SpringBootTest(classes = DomainInfrastructureTestConfiguration.class)
@RunWith(SpringRunner.class)
@TestPropertySource(locations="classpath:test.properties")
@EntityScan(basePackages = "dnd.helper.domain.infrastructure")
public class AdventurerRepositoryServiceTestIT {

    @Autowired
    private AdventurerRepository adventurerRepository;

    @Test
    public void shouldPersistAdventurer() {
        Adventurer adventurer = FakeAdventurer.getAdventurerWithAllFields();
        adventurerRepository.saveAdventurer(adventurer);
    }
}

No i generalnie to jest super, po odpaleniu testu spring boot wstaje, załączają się beany i wykonuje się test. I tutaj pojawia się pierwszy problem - jak odpalę testy z palca, to działają, natomiast ja chciałbym je odpalać podczas budowania projektu mavenem, lub podczas odpalania głównej aplikacji spring bootowej.

Po szybkim researchu w sieci, odnalazłem plugin spring-boot-maven-plugin. No więc na szybkości dodałem sobie dwa wpisy do pomów - pierwszy do modułu application, drugi do modułu domain-infrastructure (klasa startująca aplikację springbootową jest w innym module niż repozytorium):

<profiles>
        <profile>
            <id>IT</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <version>${spring.boot.version}</version>
                        <executions>
                            <execution>
                                <id>pre-integration-test</id>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                                <configuration>
                                    <skip>false</skip>
                                </configuration>
                            </execution>
                            <execution>
                                <id>post-integration-test</id>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                                <configuration>
                                    <skip>false</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
<profiles>
        <profile>
            <id>IT</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <version>2.22.0</version>
                        <configuration>
                            <includes>
                                <include>**/*IT</include>
                            </includes>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

Na koniec odpalam clean install -P IT i okazuje się, że test nie został wykonany. Jestem na 99% przekonany, że to przez konfigurację w pomach - moduł application odpala springa podczas fazy wykonywania testów integracyjnych, ale te testy są skonfigurowane w innym module.

I tutaj pojawia się pytanie - w jaki sposób napisać to, żeby zadziałało? Od razu uprzedzę pytania - nie mogę przenieść spring-boot-maven-plugin do modułu domain-infrastructure, bo nie mam w nim zależności do application i plugin nie może odnaleźć klasy startującej springboota.

Pozostało 580 znaków

2019-07-09 13:33
0

Wstaw zdjęcie architektury aplikacji.

Pozostało 580 znaków

2019-07-09 15:23
0

-P IT a masz w ogóle taki profil? Co on załącza? Generalnie wygląda to sensownie co masz, przynajmniej ten drugi wpis.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2019-07-09 16:34
0

Widok projektu z poziomu IDE:
project.PNG

Może łatwiej będzie, jak dodam link do githuba:

https://github.com/mswiac/DndHelper

Profil IT odpala spring-boot-maven-plugin z modułu application, oraz maven-failsafe-plugin z modułu domain-infrastructure.

Pozostało 580 znaków

2019-07-09 17:30
0

Zrób moze osobny moduł na IT testy i wrzuć tam tylko dependencies do poma plus configuracje maven-failsafe-plugin i nic więcej. Bo teraz to nie jestem pewien czy np. repackage spring boota nie "psuje" ci czegoś ;]


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
Wciąż po tylu latach widząc ;] mam przed oczami tą okropną emotkę z GG :O - Belka 2019-07-09 17:56
To była moja ulubiona! - Shalom 2019-07-09 18:54

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0