Tesztelés Spring és Spock segítségével

1. Bemutatkozás

Ebben a rövid bemutatóban megmutatjuk a Spring Boot tesztelési keretrendszerének támogató erejének és a Spock keretrendszer kifejező képességének egyesítésével járó előnyöket, legyen szó egységi vagy integrációs tesztekről.

2. Projekt beállítása

Kezdjük egy egyszerű webalkalmazással. Képes üdvözölni, megváltoztatni az üdvözletet és visszaállítani az alapértelmezettre egyszerű REST hívásokkal. A fő osztályon kívül egy egyszerűt használunk RestController a funkcionalitás biztosítása érdekében:

@RestController @RequestMapping ("/ hello") public class WebController {@GetMapping public String salutation () {return "Hello world!"; }}

Tehát a vezérlő a „Hello world!” Szóval köszön. A @RestController annotáció és a parancsikon annotációk biztosítják a REST végpont regisztrációját.

3. Maven A Spock és a Spring Boot Test függőségei

Először hozzáadjuk a Maven függőségeket, és ha szükséges, a Maven plugin konfigurációt.

3.1. A Spock keretrendszer-függőségek hozzáadása a tavaszi támogatással

Magának Spocknak ​​és a tavaszi támogatásnak két függőségre van szükségünk:

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

Vegye figyelembe, hogy a verziók meg vannak adva, hivatkoznak a használt groovy verzióra.

3.2. A tavaszi indítási teszt hozzáadása

A Spring Boot Test tesztelő segédprogramjainak használatához a következő függőségre van szükségünk:

 org.springframework.boot spring-boot-starter-test 2.2.2.KÖZLÍTÉSI teszt 

3.3. Groovy beállítása

És mivel Spock Groovy-ra épül, hozzá kell adnunk és konfigurálnunk kell a gmavenplus-plugin is hogy ezt a nyelvet használhassuk tesztjeink során:

 org.codehaus.gmavenplus gmavenplus-plugin 1.6 compileTests 

Ne feledje, hogy mivel csak tesztelési célokra van szükségünk Groovy-ra, és ezért a plugin célt a következőre korlátozzuk: compileTest.

4. A ApplicationContext Spock tesztben

Egy egyszerű teszt: ellenőrizze, hogy a tavaszi alkalmazás környezetében az összes bab létrejött-e:

@SpringBootTest osztály A LoadContextTest kiterjeszti a specifikációt {@Autowired (required = false) private WebController webController def "amikor a kontextus betöltődik, akkor az összes várható bab létrejön" () {várható: "a webvezérlő létrejön" webController}}

Ehhez az integrációs teszthez el kell indítanunk a ApplicationContext, ami @SpringBootTest tesz értünk. Spock tesztjeink szakaszainak elkülönítését biztosítja a következő kulcsszavakkal:mikor", “azután" vagy „elvárni ”.

Ezenkívül a Groovy Truth-t kipróbálhatjuk tesztünk utolsó soraként annak ellenőrzésére, hogy egy bab nulla-e.

5. Használata WebMvcTest Spock tesztben

Hasonlóképpen tesztelhetjük a WebController:

@AutoConfigureMockMvc @WebMvcTest osztály A WebControllerTest kiterjeszti a {@Autowired private MockMvc mvc def "specifikációt, amikor a get végrehajtásra kerül, akkor a válasz 200-as állapotú, a tartalom pedig" Hello world! "" () {Várható: "Az állapot 200, a válasz pedig" Hello " világ! '"mvc.perform (get (" / hello ")) .andExpect (status (). isOk ()) .andReturn () .response .contentAsString ==" Helló világ! " }}

Fontos megjegyezni, hogy Spock tesztjeinkben (vagy inkább Specifikációk) felhasználhatjuk a Spring Boot teszt keretrendszer összes megszokott feljegyzését.

6. Következtetés

Ebben a cikkben elmagyaráztuk, hogyan állíthatunk be egy Maven projektet a Spock és a Spring Boot tesztkeret együttes használatára. Láttuk továbbá, hogy mindkét keret tökéletesen kiegészíti egymást.

A mélyebb merülés érdekében nézze meg oktatóinkat a Spring Boot teszteléséről, a Spock keretrendszerről és a Groovy nyelvről.

Végül a forráskód további példákkal együtt megtalálható a GitHub adattárunkban.


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