Przedsprzedaż kursu SSJ: Super Senior Java rusza w listopadzie. Jeśli chcesz mieć najtaniej, zapisz się już teraz!Zapisz się →
📦 Ten wpis pochodzi z 2024 roku i jest częścią archiwum. Treść może być nieaktualna. ← Wróć do archiwum
testowanie

Testy integracyjne w Spock dla Spring Boot 3

#spock#spring boot#testy integracyjne

Jeśli planujesz korzystać ze Spock, aby pisać testy integracyjne w Spring Boot 3 (w moim przypadku 3.2.2) to mam dla Ciebie ostrzeżenie. Jeśli w swoim narzędziu budowania będziesz miał wpis:

<dependency>
    <groupId>org.spockframework</groupId>
    <artifactId>spock-spring</artifactId>
    <version>2.3-groovy-4.0</version>
    <scope>test</scope>
</dependency>

To niestety twój test, podobny do tego niżej, nie przejdzie.

@SpringBootTest(classes = [ParkingSpotConfig.class])
class ParkingOnParkingSpotIT extends Specification {
  
  @Autowired
  ParkingOnParkingSpot parkingOnParkingSpot
  
  def justArticleExampleTest() {
    when:
      parkingOnParkingSpot.park(new ParkVehicleCommand(anyParkingSpotId(), vehicleWithSize(1)))
    
    then:
      // assertions
  }
  
}

Dlaczego? Bo dostaniesz NullPointerException.

java.lang.NullPointerException: Cannot invoke method park() on null object

	at pl.cezarysanecki.parkingdomain.parking.application.ParkingOnParkingSpotIT.justArticleExampleTest(ParkingOnParkingSpotIT.groovy:21)

Jest to spowodowane tym, że org.spockframework:spock-spring:2.3 nie ogarnia współpracy z @SpringBootTest dla Spring Boot 3. Musimy się podbić do nowszej wersji np. 2.4-M1-groovy-2.5 i test bez żadnego “ale” zacznie śmigać.

Znajdź mnie na