Agurk vårintegrasjon

1. Oversikt

Agurk er et veldig kraftig testrammeverk skrevet på Ruby-programmeringsspråket, som følger BDD-metodikken (atferdsdrevet utvikling). Det gjør det mulig for utviklere å skrive brukssaker på høyt nivå i ren tekst som kan verifiseres av ikke-tekniske interessenter, og gjøre dem om til kjørbare tester, skrevet på et språk som heter Gherkin.

Vi har allerede diskutert disse i en annen artikkel.

Og Cucumber-Spring Integration er ment å gjøre testautomatisering enklere. Når vi har agurktestene integrert med Spring, bør vi kunne utføre dem sammen med Maven-bygningen.

2. Maven-avhengigheter

La oss komme i gang med Cucumber-Spring-integrasjonen ved å definere Maven-avhengighetene - startende med Cucumber-JVM-avhengighet:

 io. agurk agurk-java 6.8.0 test 

Vi finner den nyeste versjonen av Agurk JVM her.

Deretter legger vi til avhengigheten av test av JUnit og agurk:

 io. agurk agurk-junit 6.8.0 test 

Den siste versjonen av Cucumber JUnit finner du her.

Og til slutt, vår- og agurkavhengighet:

 io. agurk agurk-fjær 6.8.0 test 

Igjen kan vi sjekke ut den nyeste versjonen av Cucumber Spring her.

3. Konfigurasjon

Vi ser nå på hvordan vi kan integrere agurk i en vårapplikasjon.

Først oppretter vi en Spring Boot-applikasjon - som vi følger Spring-Boot-applikasjonsartikkelen for. Deretter oppretter vi en REST-tjeneste for våren og skriver agurktesten for den.

3.1. REST-kontroller

La oss først lage en enkel kontroller:

@RestController public class VersionController {@GetMapping ("/ version") public String getVersion () {return "1.0"; }}

3.2. Definisjon av agurk trinn

Alt vi trenger for å kjøre agurktestene våre med JUnit, er å lage en tom tom klasse med en kommentar @RunWith (Cucumber.class):

@RunWith (Cucumber.class) @CucumberOptions (features = "src / test / resources") offentlig klasse CucumberIntegrationTest {}

Vi kan se kommentaren @CucumberOptions der vi spesifiserer plasseringen til Gherkin-filen, også kjent som funksjonsfilen. På dette tidspunktet anerkjenner agurk agurkispråket; du kan lese mer om agurk i artikkelen nevnt i innledningen.

Så nå, la oss lage en agurkfunksjonsfil:

Funksjon: versjonen kan hentes Scenario: klient ringer til GET / versjon Når klienten ringer / versjon Da får klienten statuskode på 200 Og klienten mottar serverversjon 1.0

Scenarioet er å ringe GET til REST-tjenestens url /versjon og verifisere svaret.

Deretter må vi lage en såkalt limkode. Dette er metoder som knytter et enkelt Gherkin-trinn med Java-kode.

Vi må ha alternativer her - vi kan enten bruke agurkuttrykk eller vanlige uttrykk inne i kommentarene. I vårt tilfelle vil vi holde oss til vanlige uttrykk:

@When ("^ klienten ringer / versjon $") offentlig annullerer_client_issues_GET_version () kaster Throwable {executeGet ("// localhost: 8080 / version"); } @Then ("^ klienten mottar statuskode på (\ d +) $") offentlig annullerer_client_receives_status_code_of (int statusCode) kaster kastbar {HttpStatus currentStatusCode = latestResponse.getTheResponse (). GetStatusCode (); assertThat ("statuskoden er feil:" + latestResponse.getBody (), currentStatusCode.value (), er (statusCode)); } @ Og ("^ klienten mottar serverversjon (. +) $") Offentlig ugyldig the_client_receives_server_version_body (strengversjon) kaster Throwable {assertThat (latestResponse.getBody (), er (versjon)); }

Så la oss integrere agurkprøvene med Spring Application Context. For det oppretter vi en ny klasse og kommenterer den med @SpringBootTest og @CucumberContextConfiguration:

@CucumberContextConfiguration @SpringBootTest offentlig klasse SpringIntegrationTest {// executeGet implementering}

Nå kan alle agurkdefinisjonene gå i en egen Java-klasse som strekker seg SpringIntegrationTest:

offentlig klasse StepDefs utvider SpringIntegrationTest {@ When ("^ the client calls / version $") public void the_client_issues_GET_version () throw Throwable {executeGet ("// localhost: 8080 / version"); }}

Vi er klar for en prøvekjøring nå.

Til slutt kan vi kjøre raskt via kommandolinjen, bare kjøre mvn ren installasjon -Integrasjon - Maven vil utføre integrasjonstestene og vise resultatene i konsollen.

3 scenarier ([32m3 bestått [0m) 9 trinn ([32m9 bestått [0m) 0m1.054s Testkjøring: 12, Feil: 0, feil: 0, hoppet over: 0, forløpt tid: 9.283 sek - i com.baeldung.CucumberTest 2016-07-30 06: 28: 20.142 INFO 732 --- [Thread-2] AnnotationConfigEmbeddedWebApplicationContext: Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext: startup date [Sat Jul 30 06:28:12 CDT 2016]; rot til konteksthierarki Resultater: Testkjøring: 12, Feil: 0, Feil: 0, Hoppet over: 0 

4. Konklusjon

Etter å ha konfigurert agurk med våren, vil det være nyttig å bruke fjærkonfigurerte komponenter i BDD-testing. Dette er en enkel guide for å integrere agurk-testen i en Spring-Boot-applikasjon.

Som vanlig er alle kodeeksempler vist i denne opplæringen tilgjengelig på GitHub.


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