Spring Boot, testowanie repozytorium

Spring Boot, testowanie repozytorium
AN
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:2
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ą) :

Kopiuj
@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):

Kopiuj
<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>
Kopiuj
<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.

krancki
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:74.7261832, -41.7409518
  • Postów:151
0

Wstaw zdjęcie architektury aplikacji.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
AN
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:2
0

Widok projektu z poziomu IDE:
project.PNG

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

Kopiuj
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.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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ś ;]


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Belka
Wciąż po tylu latach widząc ;] mam przed oczami tą okropną emotkę z GG :O
Shalom
To była moja ulubiona!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.