spock tutorial testing with spock
Praktična vadnica Spock: Testiranje s Spock ogrodjem in Groovy programskim jezikom
Ta serija vaj bi popolnoma obogatila vaše znanje o Spock Framework.
V vsako vadnico so vključeni preprosti in jasni primeri za lažje razumevanje koncepta.
Pripravite se na brezplačno učenje Spocka !!
Seznam vseh vadnic Spock v tej seriji:
Podrobno se naučite Spocka s pomočjo te serije Intensive Spock Training za začetnike in izkušene profesionalce.
Vadnica št. | Povezava |
---|---|
Vadnica # 1 | Uvod v Spocka in Groovyja |
Vadnica # 2 | Pisanje enotnih testov s Spockom |
Vadnica št. 3 | Parametrizirano testiranje s Spockom |
Vadnica # 4 | Spock posmehovanje in zatiranje |
Vadnica št. 5 | Spock s funkcijskim testom selena |
Vadnica št. 6 | Vprašanja za intervju z Spockom |
Pregled vadnic v Spock Series
Tutorial_Num | Kaj se boste naučili |
---|---|
Vadnica # 1 | Uvod v Spocka in Groovyja Ta uvodna vadnica vam bo razložila vse o Spocku, ki je testni okvir, zgrajen na vrhu Groovyja. V bistvu uveljavlja BDD in zagotavlja, da vsi testi, napisani z uporabo okvira, sledijo konvencijam BDD. |
Vadnica # 2 | Pisanje enotnih testov s Spockom V tej vadnici bomo preučili vse podrobnosti / korake, ki so potrebni za začetek testiranja enot v Spocku, skupaj s preprostimi primeri. |
Vadnica št. 3 | Parametrizirano testiranje s Spockom Ta vadnica bo jasno razložila, kaj so parametrizirani testi in kako lahko izkoristite vgrajene funkcije Spocka, da dosežete podatkovno usmerjeno testiranje. |
Vadnica # 4 | Spock posmehovanje in zatiranje Ta Spockova vadnica bo podrobno razložila posmehovanje in zatiranje, ki sta eden najpomembnejših gradnikov obsežnih enotnih testov. |
Vadnica št. 5 | Spock s funkcijskim testom selena V tej informativni vadnici se naučite, kako uporabljati Spock za integracijsko testiranje (kot so počitniške storitve) in za funkcionalno testiranje. Na primer, integracija Spocka s selenom. |
Vadnica št. 6 | Vprašanja za intervju z Spockom Ta vadnica vključuje seznam najbolj priljubljenih vprašanj za intervju z Spockom z odgovori in primeri. Ta vprašanja bi resnično vodila vsakogar, da že v prvem poskusu uspešno očisti intervju. |
Kaj se boste naučili:
- Kaj je Spock?
- Oglejte si video vadnico Spock in Groovy
- Kaj je Groovy?
- Uvod v Spock
- Anatomija Spocka Specifikacija
- Opisi blokov specifikacij
- Pomembni nasveti
- Zaključek
- Priporočeno branje
Kaj je Spock?
Spock je testni okvir, ki je zgrajen na vrhu Groovyja. V bistvu uveljavi BDD in zagotovi, ali vsi preskusi, napisani z uporabo ogrodja, sledijo konvencijam BDD.
Za razliko od JUnit ima Spock tudi lastne Mocking in testne dvojne knjižnice ter popolno podporo za parametrizirane testne scenarije.
Zahvaljujoč temu celotnemu paketu, so Spockove specifikacije super berljive in ekspresivne, zato naredijo test, da dosežejo vse več tistega, kar je bilo namenjeno zmanjšanju klišejske kode.
Kljub vsem tem izjemnim funkcijam lahko spockove teste izvajate z obstoječim tekaškim programom JUnit in obstoječimi orodji za ukazno vrstico / gradnjo, kot sta Maven in Gradle, zaradi česar je uporaba še bolj privlačna. Na kratko Spock združuje vse dobre lastnosti JUnit-a, BDD (okviri, kot je JBehave & Kumara ) kot tudi posmehovanje.
V naslednjih oddelkih si bomo ogledali nekaj primerov, ki ponazarjajo vsako od teh značilnosti.
Oglejte si video vadnico Spock in Groovy
Kaj je Groovy?
Groovy je skriptni jezik za platformo Java.
Nekatere glavne značilnosti groovyja vključujejo:
# 1) Lahko se uporablja kot dinamično tipkani (kjer lahko spremenljivka vsebuje kakršno koli vrsto podatkov) kot tudi statično tipkan (ki uveljavlja močno tipirane konstrukte na spremenljivkah, ki vsebujejo podatke).
Primer : Matriko in zemljevid smo dodelili na enak način in znotraj groovy določimo vrsto in jo ustrezno obravnavamo.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Rezultat zgornjega vzorca kode je:
razred java.util.ArrayList
razred java.util.LinkedHashMap
#two) Vsa veljavna koda Java je tudi veljavna koda Groovy (vendar ne obratno, saj ima tudi dodatne funkcije).
# 3) Druge funkcije vključujejo metaprogramiranje, zapiranje, preverjanje statičnega tipa itd.
# 4) Za razliko Java podpičja v groovyju niso obvezna, primitivni tipi pa se privzeto štejejo za predmete.
Ker je ta vadnica bolj osredotočena na Spocka, se bomo naučili le tistih Groovyjevih funkcij, ki so bistvene za izdelavo specifikacij preskusov, ki temeljijo na Spocku.
Uvod v Spock
Za začetek poglejmo, katere knjižnice so potrebne glede na sistem gradnje, ki ga uporabljate (npr. Gradle / maven).
Za projekte, ki temeljijo na Mavenu
Projekti Maven bodo morali vključevati vtičnik za sestavljanje kode Gradle in zanesljiv vtičnik, da bodo lahko izvajali groovy specifikacije. Poleg tega groovy & Spock, odvisnosti je treba dodati tudi.
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
Za Gradle projekte
Za vzorčno datoteko gradle, kot je prikazano spodaj, najpomembnejše zahteve vključujejo gradle vtičnik in odvisnosti za groovy za kodo in 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' }
Anatomija Spocka Specifikacija
Spockove teste lahko napišete za kateri koli jezik, ki deluje na JVM. To pomeni, da tudi če je koda vaše aplikacije v Javi ali Scali ali Kotlinu itd., Se lahko še vedno odločite, da boste enoto / teste integracije napisali v Spocku (pred drugimi, kot so JUnit, JBehave itd.).
Razredi preizkusov Spock se imenujejo 'Specifikacije' (podobno kot specifikacije v svetu BDD) in lahko razširite razred 'Specifikacija' okvira Spock. (Specifikacija je osnovni razred okvira Spock).
Vsaka datoteka Spec lahko vsebuje več testov (podobno kot datoteka preskusnega razreda JUnit), vsak test pa lahko po izbiri vsebuje bloke BDD, tj. Podane, kdaj in potem. To je podobno kot drugi okviri BDD, kjer je mogoče vsakega od teh razdelkov v preskusih JUnit povezati z razdelki Uredi, Uveljavi in Uveljavi.
Spodaj je blokovni diagram, ki prikazuje hierarhijo specifikacij in testov.
Poglejmo, kako izgleda vzorčna specifikacija v kodi:
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 } }
Tukaj je treba upoštevati nekaj pomembnih točk:
# 1) Oglejte si ime testnih scenarijev (niz za ključno besedo def): »preveri enakost dveh nizov, ki ne razlikujeta od velikih in malih črk«. To so navadne angleške strune, zaradi česar so imena testov precej berljiva in resnično smiselno preizkusiti, kaj doseže.
Primerjajte ga z običajnim testom JUnit, kjer bo ime testa videti približno tako kot c.
caseEquality_withValidInput_shouldBeEqual()
#two) Glede na to, kdaj in ko so bloki enakovredni urejanju, delovanju in uveljavljanju Od tega si oglejte takratni (ali trditveni blok), ki pomeni uveljavljanje enakosti in se izogiba vsem vzorčnim kodam, povezanim s trditvami.
Primer , Trditev v JUnit bi izgledala, kot je prikazano spodaj:
@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); }
Kot lahko vidite iz zgornjega, preizkusi Spock omogočajo, da so testi manj podrobni in se izogibajo vsem vzorčnim kodam v trditvah (in namestitvi itd.)
Opisi blokov specifikacij
Za vsak posamezen blok v testu lahko določite opis bloka kot niz, da zagotovite več podrobnosti o bloku, ki se izvaja. To je koristno za zagotovitev bolj podrobne strukture testa.
Oglejmo si spodnji primer:
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 }
Pomembni nasveti
# 1) Vsi bloki v specifikaciji, ki temelji na Spocku, so neobvezni. Če pa sta navzoča, se morata 'kdaj' in 'potem' pojaviti skupaj.
#two) Če morate samo potrditi trditev (in kdaj blok ne potrebujete), lahko uporabite » pričakovati ”Blok. Uporablja se lahko za uveljavljanje predpogojev, še preden kdaj in kdaj blokira (in se lahko večkrat uporabi v testu).
Oglejmo si vzorčno uporabo pričakovanja, kot je preverjanje predpogoja pred izvajanjem bloka »kdaj«.
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 }
Kot je prikazano zgoraj, blok za pričakovanje poskuša uveljaviti vrednost razreda vnosnih polj in vrednost enega od vhodov, da leži znotraj obsega.
Zaključek
V tej vadnici za Spock smo zajeli osnove programskega jezika Groovy, skupaj z anatomijo ali osnovnimi gradniki Spockove specifikacije.
Ustvarili smo vzorčni projekt z zahtevanimi odvisnostmi, da smo napisali grokovske specifikacije Spock in napisali vzorčno specifikacijo.
V drugih vajah iz te serije se bomo poglobili v funkcije, ki jih ponuja Spockov okvir, in spoznali, kako uporabljajo groovy jezik za ustvarjanje čistih in berljivih testnih specifikacij.
razlika med b drevesom in b + drevesom
Spremljajte naše prihajajoče vadnice za Spock, če želite izvedeti več o preizkusnih napravah, trditvah in poročanju v Spocku.
Priporočeno branje
- Pisanje enotnih testov s Spock Framework
- Vprašanja za intervju z Spockom (odgovori) (najbolj priljubljeni)
- Spock za integracijo in funkcionalno testiranje s selenom
- Spock posmehovanje in zatiranje (primeri z video vajami)
- Podatkovno ali parametrizirano testiranje s Spock Framework
- Vadnice za globinsko zasenčenje za začetnike
- Vadnica za odsev Java s primeri
- Vadnica za kumare selena: Integracija kumar Java Selenium WebDriver