spock tutorial testing with spock
Praktisk opplæringsserie fra Spock: Testing med Spock rammeverk og Groovy programmeringsspråk
Denne opplæringsserien vil berike din kunnskap om Spock Framework fullstendig.
Enkle og tydelige eksempler er inkludert i hver opplæring for enkel forståelse av konseptet.
Gjør deg klar til å lære Spock gratis !!
Liste over alle Spock-opplæringene i denne serien:
Lær Spock i detalj ved hjelp av denne Intensive Spock Training-serien for nybegynnere og erfarne fagfolk.
Opplæringen # | Link |
---|---|
Opplæring # 1 | Introduksjon til Spock og Groovy |
Opplæring # 2 | Skriveenhetstester med Spock |
Opplæring # 3 | Parameterisert testing med Spock |
Opplæring # 4 | Spock Mocking and Stubbing |
Opplæring # 5 | Spock med selen funksjonstest |
Opplæring # 6 | Spock Intervju Spørsmål |
Oversikt over opplæringsprogrammer i Spock Series
Tutorial_Num | Hva du vil lære |
---|---|
Opplæring # 1 | Introduksjon til Spock og Groovy Denne innledende veiledningen vil forklare alt om Spock, som er et testrammeverk som er bygget på toppen av Groovy. Det håndhever BDD i kjernen og sørger for at alle tester skrevet med rammeverket følger BDD-konvensjonene. |
Opplæring # 2 | Skriveenhetstester med Spock I denne opplæringen vil vi gå gjennom alle detaljene / trinnene som kreves for å komme i gang med Unit testing i Spock sammen med enkle eksempler. |
Opplæring # 3 | Parameterisert testing med Spock Denne opplæringen vil tydelig forklare hva parametriserte tester er, og hvordan du kan utnytte de innebygde funksjonene i Spock for å oppnå datadrevet testing. |
Opplæring # 4 | Spock Mocking and Stubbing Denne Spock-opplæringen vil forklare i detalj om Mocking and Stubbing, som er en av de mest essensielle byggesteinene i omfattende enhetstester. |
Opplæring # 5 | Spock med selen funksjonstest Lær hvordan du bruker Spock for integrasjonstesting (som hviletjenester) og for funksjonstesting fra denne informative opplæringen. For eksempel integrering av Spock med selen. |
Opplæring # 6 | Spock Intervju Spørsmål Denne opplæringen inneholder en liste over de mest populære Spock-intervjuspørsmålene med svar og eksempler. Disse spørsmålene vil faktisk lede noen til å fjerne spock-intervjuet med suksess ved første forsøk. |
Hva du vil lære:
- Hva er Spock?
- Se opplæringen om Spock and Groovy Video
- Hva er Groovy?
- Komme i gang med Spock
- Anatomy of a Spock Specification
- Spesifikke blokkbeskrivelser
- Viktige tips
- Konklusjon
- Anbefalt lesing
Hva er Spock?
Spock er et testrammeverk som er bygget på toppen av Groovy. Det håndhever BDD i kjernen og sikrer at alle tester skrevet med rammeverket følger BDD-konvensjonene.
I motsetning til JUnit har Spock også sine egne Mocking- og test-dobbeltbiblioteker, samt full støtte for parametriserte testscenarier.
Det er på grunn av denne komplette pakken i seg selv, Spock-spesifikasjonene er superlestbare og uttrykksfulle, og som et resultat av dette gjør de testen for å oppnå mer og mer av det den var ment for å redusere klisjé-kjelekoden.
Til tross for alle disse kule funksjonene, kan Spock-tester kjøres ved hjelp av den eksisterende JUnit-testløperen og de eksisterende kommandolinje- / byggeverktøyene som Maven og Gradle, noe som gjør det enda mer overbevisende å bruke. I et nøtteskall kombinerer Spock alle de gode funksjonene i JUnit, BDD (rammer som JBehave & Agurk ) samt spott.
Vi vil se på et par eksempler som illustrerer hver av disse funksjonene i de ytterligere delene.
Se opplæringen om Spock and Groovy Video
Hva er Groovy?
Groovy er et skriptspråk for Java-plattformen.
Noen av hovedtrekkene ved groovy inkluderer:
#1) Den kan brukes som dynamisk skrevet (der en variabel kan inneholde alle typer data) så vel som statisk skrevet (som håndhever kraftig typede konstruksjoner på variabler som inneholder data).
Eksempel : Vi har tilordnet matrise og kart på samme måte og internt bestemmer groovy typen og håndterer den riktig.
def listType = [1,2,3] def mapType = ['red':2,'green':3] println(listType.getClass()) println(mapType.getClass())
Resultatet av ovennevnte kodeeksempel er:
klasse java.util.ArrayList
klasse java.util.LinkedHashMap
#to) All gyldig Java-kode er også en gyldig Groovy-kode (men ikke omvendt, da den også har flere funksjoner).
# 3) Andre funksjoner inkluderer metaprogrammering, nedleggelser, kontroll av statisk type osv.
# 4) I motsetning til Java semikoloner er valgfrie i groovy, og de primitive typene betraktes som objekter som standard.
Siden denne opplæringsserien er mer fokusert på Spock, lærer vi bare de Groovy-funksjonene som er essensielle for å lage Spock-baserte testspesifikasjoner.
Komme i gang med Spock
For å komme i gang, la oss se hvilke biblioteker som kreves, avhengig av hvilket byggesystem du bruker (f.eks. Gradle / maven).
For Maven-baserte prosjekter
Maven-prosjekter må inkludere et plugin for å kompilere Gradle-kode samt et surefire-plugin for å kunne kjøre groovy-baserte spesifikasjoner. I tillegg til denne groovy & Spock, avhengigheter bør også legges til.
org.codehaus.gmavenplus gmavenplus-plugin 1.5 testCompile maven-surefire-plugin 2.18.1 false **/*Spec.java org.spockframework spock-core 1.3-groovy-2.5 test
For Gradle-baserte prosjekter
For en prøve gradefil som nedenfor, inkluderer de viktigste kravene gradertillegg og avhengighetene for groovy for kode og test.
plugins { id 'java' id 'groovy' } repositories { mavenCentral() } dependencies { compile 'org.codehaus.groovy:groovy-all:2.4.8' testCompile 'org.spockframework:spock-core:1.1-groovy-2.4' }
Anatomy of a Spock Specification
Spock-tester kan skrives for alle språk som kjører på JVM. Dette betyr at selv om applikasjonskoden din er i Java eller Scala eller Kotlin etc., kan du fortsatt velge å skrive enhet- / integrasjonstestene dine i Spock (over andre som JUnit, JBehave, etc.).
Spock-testklasser kalles “Spesifikasjoner” (ligner på spesifikasjoner i BDD-verden), og du kan utvide klassen “Spesifikasjon” i Spock-rammeverket. (Spesifikasjonen er basisklassen til Spock-rammeverket).
Hver Spec-fil kan inneholde flere tester (ligner på en JUnit testklassfil), og hver test kan valgfritt inneholde BDD-blokkene, dvs. gitt, når og da. Dette ligner på andre BDD-rammer, hvor hver av disse seksjonene kan korreleres til henholdsvis Arranger, Act og Assert-seksjoner i JUnit-testene.
Nedenfor er et blokkdiagram som viser hierarkiet til Spec og tester.
La oss se hvordan en eksempelspesifikasjon ser ut i koden:
import spock.lang.Specification class SampleSpec extends Specification { def 'check case-insensitive equality of 2 strings'() { given: String str1 = 'hello' String str2 = 'HELLO' when: str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: str1 == str2 } def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 when: int result = input1 + input2 then: result == 35 } }
Få viktige punkter å merke seg her:
#1) Se på navnet på testscenariene (strengen etter def-nøkkelordet): “sjekk store og små bokstaver”. Dette er enkle engelske strenger, og dette gjør testnavnene ganske lesbare og gir en virkelig følelse av å teste hva det oppnår.
Sammenlign den med den vanlige JUnit-testen der testnavnet vil se ut som noe c.
caseEquality_withValidInput_shouldBeEqual()
#to) Gitt, når og da blokker tilsvarer Arranger, Act og Assert. Ut av disse ser vi på den da (eller påstandsblokken) som innebærer likestilling og unngår all kjeleplatekode assosiert med påstander.
Eksempel , En påstand i JUnit ville sett ut som vist nedenfor:
@Test public void compareStrings_withValidInput_shouldReturnSuccess() { // Arrange String str1 = 'hello'; String str2 = 'HELLO'; // Act str1 = str1.toLowerCase(); str2 = str2.toLowerCase(); // Assert Assert.assertEquals(str1,str2); }
Som du kan se fra ovenstående, får Spock-testene testene til å se mindre detaljerte ut, i tillegg til å unngå all kjeleplatekode i påstander (og oppsett osv.)
Spesifikke blokkbeskrivelser
For hver av de enkelte blokkene i en test kan du velge å oppgi blokkbeskrivelse som en streng for å gi mer informasjon om blokken som blir utført. Dette er nyttig for å gi en mer detaljert struktur til testen.
La oss se et eksempel nedenfor:
def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
Viktige tips
#1) Alle blokkene i en Spock-basert spesifikasjon er valgfrie. Imidlertid, hvis til stede, 'når' og 'da' skal vises sammen i rekkefølge.
#to) Hvis du bare trenger å validere en påstand (og du ikke har behov for når du blokkerer), kan du bruke ' forventer ”Blokk. Den kan brukes til å hevde forutsetninger selv før når og deretter blokkerer (og kan brukes flere ganger i en test).
La oss se et eksempel på bruk av forventet som å validere forutsetningen før du utfører 'når' -blokken.
def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 expect: input1.getClass().toString() == 'class java.lang.Integer' input2.getClass().toString() == 'class java.lang.Integer' input1 = Integer.MIN_VALUE when: int result = input1 + input2 then: result == 35 }
Som vist ovenfor prøver forventningsblokken å hevde klasseverdien til inntastingsfeltene så vel som verdien på en av inngangene for å ligge innenfor området.
Konklusjon
I denne Spock-veiledningen har vi dekket det grunnleggende om Groovy programmeringsspråk, sammen med anatomi eller grunnleggende byggesteiner i en Spock-spesifikasjon.
Vi opprettet et prøveprosjekt med de nødvendige avhengighetene for å kunne skrive groovy-baserte Spock-spesifikasjoner og skrev en eksempelspesifikasjon.
I de andre opplæringene i denne serien vil vi gå dypere inn i funksjonene som tilbys av Spock-rammeverket og bli kjent med hvordan de bruker groovy språk for å skape rene og lesbare testspesifikasjoner.
hvordan du spiller mkv-filer på pc
Følg med på våre kommende Spock-veiledninger for å vite mer om testinnretninger, påstander og rapportering i Spock.
Anbefalt lesing
- Skriveenhetstester med Spock Framework
- Spock Intervjuespørsmål med svar (mest populære)
- Spock for integrering og funksjonstesting med selen
- Spock Mocking and Stubbing (Eksempler med videoveiledninger)
- Datadrevet eller parametrisert testing med Spock Framework
- In-Depth Eclipse Tutorials For Beginners
- Java Reflection Tutorial med eksempler
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration