Problem Mockito - raz testy przechodzą a raz nie

0

Mam problem z testami, problem polega na tym iż gdy uruchamiam pojedyńczy test to przechodzi , gdy uruchamiam testy w klasie to również przechodzą, natomiast przy budowaniu w mavenie 2 testy , które wcześniej przechodziły się wysypują( pojawia się null pointer), a i to nie jest regułą. Ponieważ gdy po ponownym uruchomieniu kompa odpalam od razu build w mavenie to się wszystko buduję, za drugim razem juz nie.
nie wiem w czym jest probliem.
Aplikacja działa na javie 8
junit - 5.6.3
Mockito - 2.23.0

2

Pokaż logi, testy (jeśli możesz) i stack trace, bo ciężko zgadywać w ciemno.

  • Jak odpalasz "pojedynczy test" i "pojedynczą klasę"? Również przez maven, czy np. runnerem z IntelliJ?
  • Jeśli odpalisz pojedynczy test poprzez maven, to wtedy też przechodzi?
  • Jak odpalasz wszystkie testy, to sekwencyjnie czy równolegle współbieżnie?
1

Zgaduje:

  1. Kolejność wykonywania testów jest niedeterministyczna
  2. W jednym teście ustawiasz zmienną z której korzytasz w drugim
  3. W IntelliJ używaż IJ runnera i on puszcza testy w kolejności A, B; MVN puszcza losowo i czasami jest B;A

Zawsze rób

mock = Mockito.mock(FooService.class)

w @BeforeEach, a setup metod mocak w każdym tescie z osobna i wszystko będzie w porządku...

1

Objawy są charakterystyczne dla ukrytego stanu.
Poza tym co wymienił 0xmarcin jako potencjalne ukryte stany, dodałbym używanie singletonów w kodzie (ergo jeden test może wpłynąć na wynik innego, bo zmienia się stan sigletona).

0

Pokaż sensowne logi z mavena, z przebiegu, w którym testy się wysypują.

1

Klasyczny problem:

  • testy które polegają na kolejności (np. w jednym teście cośtam robisz i drugi test polega na tym)
  • testy które wywalą się przy równoległym odpaleniu

Jeśli to są unit testy to popatrz na wszystko co tworzysz w zasięgu całej klasy a nie konkretnego testu i zobacz czego nie czyścisz. Może np. tworzysz jakiś obiekt raz i wszystkie testy z tego jednego obiektu korzystają?

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