konwencja zapisywania testów integracyjnych

0

Mamy takie drzewo na testy jednostkowe:

/-main
  /-src
  /-test
    /-net.4programmers.julian.app.service
      --FirstServiceTest.java
      --SecondServiceTest.java

Napisałem test integracyjny FirstIntegrationTest.java gdzie go wepchnąć, jaką macie konwencję?

Załóżmy, że zrobię tak jak w Atlassianie:

/-main
  /-src
  /-test
    /-ut
      /-net.4programmers.julian.app.service
        --FirstServiceTest.java
        --SecondServiceTest.java
    /-it
      /-net.4programmers.julian.app
        --FirstIntegrationTest.java

Co zrobić by domyślnie test integracyjny się nie odpalał przy mvn install i żeby wywoływać go mavenem "na życzenie"?
A może osobny projekt na testy integracyjne?

1

Ja robie osobny moduł bo testy integracyjne mają kupę swoich zależności i generalnie nie pasują do żadnego innego modułu bo są przecież cross-cutting.

Co zrobić by domyślnie test integracyjny się nie odpalał przy mvn install i żeby wywoływać go mavenem "na życzenie"?

To akurat dziwny pomysł.

0
Shalom napisał(a):

Ja robie osobny moduł bo testy integracyjne

moduł czy projekt? Bo jak robis moduł, to jak ktoś chce to szybko skompilować to będzie czekał aż mu się kilkunastuminotowe testy integracyjne wykonają.

0

No można testów wyłączać w mavienie?

0
lion137 napisał(a):

No można testów wyłączać w mavienie?

Chciałbym wyłączać tylko integracyjne (kilkunasto minutowe), a zostawiać jednostkowe (kilkunastosekundowe).

0

Używasz jakiegoś pluginu do odpalania testów?

1
Julian_ napisał(a):

Chciałbym wyłączać tylko integracyjne (kilkunasto minutowe), a zostawiać jednostkowe (kilkunastosekundowe).

No to maven surefire plugin od tego jest (do integracyjnych jest failsafe plugin)

1
Pinek napisał(a):
Julian_ napisał(a):

Chciałbym wyłączać tylko integracyjne (kilkunasto minutowe), a zostawiać jednostkowe (kilkunastosekundowe).

No to maven surefire plugin od tego jest (do integracyjnych jest failsafe plugin)

A jak trzeba więcej rozróżnień to są jeszcze profile w mavenie

2

moduł czy projekt? Bo jak robis moduł, to jak ktoś chce to szybko skompilować to będzie czekał aż mu się kilkunastuminotowe testy integracyjne wykonają.

Testy IT mam ustawione w failsafe plugin zeby leciały na verify a nie na compile czy na test. Poza tym to jakiś srogi monolit jak masz testy które lecą kilkanaście minut o_O

1

Tak jak @Shalom
Masz 2 wyjscia, albo robisz oddzielny projekt do testów IT albo musisz skonfigurować pluginy failsafe i surefire.
surefire -> unit testy
failsafe -> it testy
Odpalajac mvn verify, pierw przelecisz przez jednostkowe dopiero potem wchodzą IT. U mnie pamiętam był to pewien problem... Jednostkowych było całkiem sporo a ja np chciałem sprawdzić tylko testy IT. Wpadłem na pomysł aby załączyć flage podawaną podczas run coś w stylu
mvn verify --unitTest=false (niepamiętam syntax, bez podawania flagi wszystko leciało normalnie)
która wyłączała odpalanie unit testów.
No i generalnie po tym case z teamem doszedliśmy do wniosku że najlepiej oddzielić zestaw testów IT od całego projektu.

1

Zacznij testować use case i pisz testy per use case. Problem nazewnictwa zniknie. Najlepiej z bazą danych testcontainers i używając klienta HTTP etc.

Mówisz, że takie testy są wolne? Problem leży gdzie indziej prawdopodobnie w magii frameworków, więc przeczytaj ich dokumentację lub użyj prostszych narzędzi.

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