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.