Testiranje s Springom i Spockom

1. Uvod

U ovom kratkom vodiču pokazat ćemo prednosti kombiniranja podržavajuće snage okvira za testiranje Spring Boot-a i izražajnosti Spockova okvira, bilo da je to za jedinične ili integracijske testove.

2. Postavljanje projekta

Počnimo s jednostavnom web aplikacijom. Jednostavnim REST pozivima može pozdraviti, promijeniti pozdrav i vratiti ga na zadane vrijednosti. Osim glavne klase, koristimo jednostavnu RestController pružiti funkcionalnost:

@RestController @RequestMapping ("/ hello") javni razred WebController {@GetMapping javni pozdrav niza () {return "Hello world!"; }}

Dakle, kontrolor pozdravlja s "Hello world!". The @RestController napomena i bilješke prečaca osiguravaju REST registraciju krajnje točke.

3. Maven Ovisnosti za Spock i Spring Boot Test

Počinjemo dodavanjem ovisnosti Mavena i po potrebi konfiguracije dodatka Maven.

3.1. Dodavanje ovisnosti Spock Framework-a s proljetnom podrškom

Za samog Spocka i za proljetnu podršku potrebne su nam dvije ovisnosti:

 test org.spockframework spock-core 1.2-groovy-2.4 test org.spockframework spock-spring 1.2-groovy-2.4 test 

Primijetite da su navedene verzije referenca na korištenu groovy verziju.

3.2. Dodavanje proljetnog testa pokretanja

Da bismo koristili uslužne programe za testiranje Spring Boot, potrebna nam je sljedeća ovisnost:

 org.springframework.boot spring-boot-starter-test 2.2.2.Opusti test 

3.3. Postavljanje Groovyja

A budući da se Spock temelji na Groovyju, moramo dodati i konfigurirati gmavenplus-uplugin također kako bismo mogli koristiti ovaj jezik u našim testovima:

 org.codehaus.gmavenplus gmavenplus-dodatak 1.6 compileTests 

Imajte na umu da, budući da nam Groovy treba samo u svrhu ispitivanja, te stoga ograničavamo cilj dodatka na compileTest.

4. Učitavanje datoteke ApplicationContext u Spock testu

Jednostavan test je da provjerite jesu li stvoreni svi Beans u kontekstu aplikacije Spring:

Klasa @SpringBootTest LoadContextTest proširuje specifikaciju {@Autowired (obavezno = netačno) private WebController webController def "kada se učita kontekst tada se kreiraju svi očekivani grah" () {očekivati: "WebController je stvoren" webController}}

Za ovaj test integracije moramo pokrenuti ApplicationContext, što je što @SpringBootTest čini za nas. Spock u našem testu pruža odvajanje odjeljaka s ključnim riječima poput „kada", “zatim" ili "očekivati".

Osim toga, možemo iskoristiti Groovy Truth kako bismo provjerili je li grah nulan, kao posljednji redak našeg testa ovdje.

5. Korištenje WebMvcTest u Spock testu

Isto tako, možemo testirati ponašanje WebController:

@AutoConfigureMockMvc @WebMvcTest klasa WebControllerTest proširuje Specifikaciju {@Autowired private MockMvc mvc def "kada se izvrši get odgovor ima status 200 i sadržaj je 'Hello world!'" () {Očekivati: "Status je 200, a odgovor je" Hello svijet! '"mvc.perform (get (" / hello ")) .andExpect (status (). isOk ()) .andReturn () .response .contentAsString ==" Hello world! " }}

Važno je napomenuti da u našim Spockovim testovima (ili bolje rečeno Tehnički podaci) možemo koristiti sve poznate napomene iz testnog okvira Spring Boot-a na koje smo navikli.

6. Zaključak

U ovom smo članku objasnili kako postaviti projekt Maven za upotrebu Spocka i testnog okvira Spring Boot u kombinaciji. Nadalje, vidjeli smo kako se oba okvira savršeno nadopunjuju.

Za dublje ronjenje pogledajte naše vodiče o testiranju s Spring Bootom, o Spock okviru i o jeziku Groovy.

Napokon, izvorni kod s dodatnim primjerima možete pronaći u našem GitHub spremištu.


$config[zx-auto] not found$config[zx-overlay] not found