Agurkfjederintegration

1. Oversigt

Agurk er en meget kraftig testramme skrevet på Ruby programmeringssprog, der følger BDD (adfærd-drevet udvikling) metode. Det gør det muligt for udviklere at skrive brugssager på højt niveau i almindelig tekst, der kan verificeres af ikke-tekniske interessenter, og gøre dem til eksekverbare test, skrevet på et sprog kaldet Gherkin.

Vi har allerede diskuteret disse i en anden artikel.

Og agurk-fjederintegration er beregnet til at gøre testautomatisering lettere. Når vi først har agurktestene integreret med Spring, skal vi være i stand til at udføre dem sammen med Maven-bygningen.

2. Maven-afhængigheder

Lad os komme i gang med Cucumber-Spring-integrationen ved at definere Maven-afhængighederne - startende med Cucumber-JVM-afhængighed:

 io. agurk agurk-java 6.8.0 test 

Vi kan finde den nyeste version af agurk JVM her.

Dernæst tilføjer vi afhængigheden af ​​test af JUnit og agurk:

 io. agurk agurk-junit 6.8.0 test 

Den seneste version af agurk JUnit kan findes her.

Og endelig afhængighed af forår og agurk:

 io. agurk agurk-fjeder 6.8.0 test 

Igen kan vi tjekke den nyeste version af Agurk Spring herovre.

3. Konfiguration

Vi ser nu på, hvordan vi kan integrere agurk i en Spring-applikation.

Først opretter vi en Spring Boot-applikation - som vi følger artiklen om Spring-Boot-applikation for. Derefter opretter vi en Spring REST-tjeneste og skriver agurktesten for den.

3.1. REST-controller

Lad os først oprette en simpel controller:

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

3.2. Definitioner af agurktrin

Alt hvad vi behøver for at køre vores agurktests med JUnit er at oprette en enkelt tom klasse med en kommentar @RunWith (Agurk.klasse):

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

Vi kan se kommentaren @CucumberOptions hvor vi specificerer placeringen af ​​Gherkin-filen, som også er kendt som funktionsfilen. På dette tidspunkt genkender agurk agurketsproget; du kan læse mere om agurk i artiklen nævnt i indledningen.

Så lad os nu oprette en agurkfunktionsfil:

Funktion: versionen kan hentes Scenarie: klient ringer til GET / version Når klienten ringer / version Så modtager klienten statuskode på 200 Og klienten modtager serverversion 1.0

Scenariet er at foretage et GET-opkald til REST-tjeneste url /version og bekræft svaret.

Dernæst skal vi oprette en såkaldt limkode. Dette er metoder, der forbinder et enkelt agurkatrin med Java-kode.

Vi er nødt til muligheder her - vi kan enten bruge agurkeudtryk eller regulære udtryk inde i kommentarerne. I vores tilfælde holder vi os til de regulære udtryk:

@When ("^ klienten kalder / version $") offentlig annullerer the_client_issues_GET_version () kast Throwable {executeGet ("// localhost: 8080 / version"); } @Then ("^ klienten modtager statuskode på (\ d +) $") offentligt ugyldigt_client_receives_status_code_of (int statusCode) kaster Throwable {HttpStatus currentStatusCode = latestResponse.getTheResponse (). GetStatusCode (); assertThat ("statuskode er forkert:" + latestResponse.getBody (), currentStatusCode.value (), er (statusCode)); } @And ("^ klienten modtager serverversion (. +) $") Offentlig ugyldig_client_receives_server_version_body (strengversion) kaster Throwable {assertThat (latestResponse.getBody (), er (version)); }

Så lad os nu integrere agurktestene med Spring Application Context. Til det opretter vi en ny klasse og kommenterer den med @SpringBootTest og @CucumberContextConfiguration:

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

Nu kan alle agurkdefinitioner gå i en separat Java-klasse, der udvides SpringIntegrationTest:

offentlig klasse StepDefs udvider SpringIntegrationTest {@When ("^ klienten kalder / version $") offentlig annullerer_client_issues_GET_version () kaster Throwable {executeGet ("// localhost: 8080 / version"); }}

Vi er alle klar til en testkørsel nu.

Endelig kan vi køre hurtigt via kommandolinjen ved blot at køre mvn ren installation -Pintegration - Maven udfører integrationstestene og viser resultaterne i konsollen.

3 scenarier ([32m3 bestået [0m) 9 trin ([32m9 bestået [0m) 0m1.054s Testkørsel: 12, Fejl: 0, Fejl: 0, Springet over: 0, Forløbet 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]; rod af konteksthierarki Resultater: Testkørsel: 12, Fejl: 0, Fejl: 0, Springet over: 0 

4. Konklusion

Efter at have konfigureret agurk med fjeder, vil det være praktisk at bruge fjederkonfigurerede komponenter til BDD-test. Dette er en enkel guide til integration af agurktesten i en Spring-Boot-applikation.

Som normalt er alle kodeeksempler vist i denne vejledning tilgængelige på GitHub.


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