spock tutorial testing with spock
Praktični Spock vodiči: Testiranje sa Spock okvirom i Groovy programskim jezikom
Ova serija tutorijala u potpunosti će obogatiti vaše znanje o Spock Frameworku.
Jednostavni i jasni primjeri uključeni su u svaki tutorial radi lakšeg razumijevanja koncepta.
Pripremite se za besplatno učenje Spocka !!
Popis svih Spockova vodiča u ovoj seriji:
Detaljno naučite Spocka uz pomoć ove serije Intenzivnih treninga za spoke za početnike i iskusne profesionalce.
Vodič # | Veza |
---|---|
Vodič br. 1 | Uvod u Spocka i Groovyja |
Vodič br. 2 | Pisanje jedinstvenih testova sa Spockom |
Vodič br. 3 | Parametarsko ispitivanje sa Spockom |
Vodič br. 4 | Spock ruganje i stubiranje |
Vodič br. 5 | Spock s testom funkcionalnosti selena |
Vodič br. 6 | Pitanja za intervju u Spocku |
Pregled lekcija u Spock serijalu
Tutorial_Num | Što ćete naučiti |
---|---|
Vodič br. 1 | Uvod u Spocka i Groovyja Ovaj će uvodni vodič objasniti sve o Spocku, koji je testni okvir izgrađen na vrhu Groovyja. Provodi BDD u osnovi i osigurava da svi testovi napisani pomoću okvira slijede BDD konvencije. |
Vodič br. 2 | Pisanje jedinstvenih testova sa Spockom U ovom uputstvu proći ćemo kroz sve detalje / korake potrebne za započinjanje s testiranjem jedinica u Spocku, zajedno s jednostavnim primjerima. |
Vodič br. 3 | Parametarsko ispitivanje sa Spockom Ovaj će vodič jasno objasniti što su parametrizirani testovi i kako možete iskoristiti ugrađene značajke Spocka da biste postigli testiranje na temelju podataka. |
Vodič br. 4 | Spock ruganje i stubiranje Ovaj Spockov vodič detaljno će objasniti ruganje i nabijanje koji su jedan od najvažnijih gradivnih elemenata opsežnih testova jedinice. |
Vodič br. 5 | Spock s testom funkcionalnosti selena Naučite kako se koristiti Spockom za integracijsko testiranje (poput usluga odmora) i za funkcionalno testiranje iz ovog informativnog vodiča. Na primjer, integriranje Spocka sa selenom. |
Vodič br. 6 | Pitanja za intervju u Spocku Ovaj vodič uključuje popis najpopularnijih pitanja za intervjue sa Spockom s odgovorima i primjerima. Ta bi pitanja doista vodila svakoga da uspješno očisti spock intervju iz prvog pokušaja. |
Što ćete naučiti:
- Što je Spock?
- Pogledajte Spock and Groovy Video Tutorial
- Što je Groovy?
- Početak rada sa Spockom
- Anatomija spokove specifikacije
- Opisi blokova specifikacija
- Važni savjeti
- Zaključak
- Preporučena literatura
Što je Spock?
Spock je testni okvir koji je izgrađen na vrhu Groovyja. Provodi BDD u osnovi i osigurava da li svi testovi napisani pomoću okvira slijede BDD konvencije.
Također, za razliku od JUnit, Spock ima vlastite Mocking i test dvostruke knjižnice, kao i potpunu podršku za parametrizirane scenarije testiranja.
Zahvaljujući ovom kompletnom paketu u sebi, Spockove su specifikacije super čitljive i izražajne, a kao rezultat toga čine test kako bi postigli sve više i više onoga što je namijenjeno smanjenju klišejskog koda.
Unatoč svim ovim sjajnim značajkama, Spock testovi mogu se pokrenuti pomoću postojećeg pokretačkog programa za testiranje JUnit i postojećih alata za naredbu / izgradnju, kao što su Maven i Gradle, što ga čini još privlačnijim za upotrebu. Ukratko, Spock kombinira sve dobre značajke JUnit-a, BDD (okviri poput JBehave & Krastavac ) kao i ruganje.
U sljedećim ćemo odjeljcima pogledati nekoliko primjera koji ilustriraju svaku od ovih značajki.
Pogledajte Spock and Groovy Video Tutorial
Što je Groovy?
Groovy je skriptni jezik za Java platformu.
Neke od glavnih značajki groovyja uključuju:
# 1) Može se koristiti kao dinamički upisani (gdje varijabla može sadržavati bilo koju vrstu podataka), kao i statički ukucani (koji provodi snažno otkucane konstrukcije na varijablama koje sadrže podatke).
Primjer : Niz i mapu dodijelili smo na isti način, a groovy interno određuje vrstu i prikladno rukuje s njom.
def listType = [1,2,3] def mapType = ['red':2,'green':3] println(listType.getClass()) println(mapType.getClass())
Rezultat gornjeg uzorka koda je:
razred java.util.ArrayList
razred java.util.LinkedHashMap
#dva) Sav valjani Java kôd također je važeći Groovy kôd (ali ne i obrnuto, jer ima i dodatne značajke).
# 3) Ostale značajke uključuju metaprogramiranje, zatvaranja, provjeru statičkog tipa itd.
# 4) Za razliku od Java zarez nisu obvezni u groovy, a primitivni tipovi se prema zadanim postavkama smatraju objektima.
Kako je ovaj niz tutorijala više usmjeren na Spocka, tek ćemo naučiti one Groovy značajke koje su ključne za izradu specifikacija testa temeljenih na Spocku.
Početak rada sa Spockom
Da bismo započeli, pogledajmo koje su knjižnice potrebne ovisno o tome koji sustav gradnje koristite (npr. Gradle / maven).
Za projekte temeljene na Mavenu
Maven projekti morat će sadržavati dodatak za kompajliranje Gradle koda, kao i sigurni dodatak kako bi pokrenuli groovy specifikacije. Uz ovaj groovy & Spock, ovisnosti također treba dodati.
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 projekte temeljene na Gradleu
Za uzorak datoteke gradle, kao što je prikazano u nastavku, najvažniji zahtjevi uključuju dodatak gradle i ovisnosti za groovy za kôd i 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 spokove specifikacije
Spock testovi mogu se napisati za bilo koji jezik koji radi na JVM-u. To znači da, čak i ako je vaš aplikacijski kôd na Javi, Scali ili Kotlinu itd., I dalje možete odabrati da svoje jedinice / integracijske testove napišete u Spocku (u odnosu na druge poput JUnit, JBehave itd.).
Razredi ispitivanja Spock nazivaju se 'Specifikacije' (slično specifikacijama u BDD svijetu) i možete proširiti klasu 'Specifikacija' okvira Spock. (Specifikacija je osnovna klasa Spockova okvira).
Svaka datoteka sa specifikacijama može sadržavati više testova (slično datoteci klase testa JUnit), a svaki test po želji može sadržavati BDD blokove, tj. Dano je, kada i tada. To je slično ostalim BDD okvirima, gdje svaki od ovih odjeljaka može biti povezan s odjeljcima Raspored, djelovanje i potvrđivanje u testovima JUnit.
Ispod je blok dijagram koji prikazuje hijerarhiju Spec i testova.
Pogledajmo kako izgleda specifikacija uzorka u kodu:
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 } }
Ovdje treba napomenuti nekoliko važnih točaka:
# 1) Pogledajte naziv testnih scenarija (niz nakon ključne riječi def): “provjeri jednakost 2 niza bez velikih i malih slova”. To su obične engleske žice, što čini nazive testa prilično čitljivima i daje stvarni smisao za testiranje onoga što postiže.
Usporedite ga s uobičajenim testom JUnit gdje će naziv testa izgledati otprilike c.
caseEquality_withValidInput_shouldBeEqual()
#dva) S obzirom na to da su blokovi kada i tada ekvivalentni rasporedu, djelovanju i potvrđivanju. Iz ovih pogledajte tada (ili blok assert) koji podrazumijeva tvrdnju o jednakosti i izbjegava sav kôd uzorka povezan s tvrdnjama.
Primjer , Tvrdnja u JUnit-u izgledala bi kao što je prikazano u nastavku:
@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); }
Kao što možete vidjeti iz gore navedenog, Spockovi testovi čine da testovi izgledaju manje opširni, kao i da se izbjegava sav standardni obrazac u tvrdnjama (i postavljanju itd.)
Opisi blokova specifikacija
Za svaki od pojedinačnih blokova u testu možete odabrati opis bloka kao niz koji pruža više detalja o bloku koji se izvršava. Ovo je korisno za pružanje detaljnije strukture testu.
Pogledajmo primjer u nastavku:
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 }
Važni savjeti
# 1) Svi blokovi u specifikaciji temeljenoj na Spocku nisu obavezni. Međutim, ako su prisutni, „kada“ i „tada“ trebali bi se pojaviti zajedno.
#dva) Ako samo trebate potvrditi tvrdnju (a nemate potrebu za blokadom), možete upotrijebiti ' očekivati ' blok. Može se koristiti za utvrđivanje preduvjeta čak i prije kada i tada blokira (i može se koristiti više puta u testu).
Pogledajmo primjer korištenja očekivanja poput provjere valjanosti preduvjeta prije izvođenja bloka 'kada'.
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 }
Kao što je gore prikazano, blok očekivanja pokušava utvrditi vrijednost klase polja za unos, kao i vrijednost jednog od ulaza koji se nalazi unutar raspona.
Zaključak
U ovom vodiču za Spock pokrili smo osnove programskog jezika Groovy, zajedno s anatomijom ili osnovnim gradivnim dijelovima Spockove specifikacije.
Stvorili smo ogledni projekt sa potrebnim ovisnostima kako bismo napisali spokovne specifikacije na temelju groovy i napisali specifikaciju uzorka.
U ostalim tutorijalima iz ove serije, dublje ćemo istražiti značajke koje pruža Spock framework i upoznati se na koji način oni koriste groovy jezik za stvaranje čistih i čitljivih specifikacija testa.
najbolji program za uklanjanje virusa
Pratite naše nadolazeće vodiče za Spock kako biste saznali više o ispitnim uređajima, tvrdnjama i izvještavanju u Spocku.
Preporučena literatura
- Pisanje jedinstvenih testova sa Spock Frameworkom
- Spock intervju pitanja s odgovorima (najpopularnije)
- Spock za integraciju i funkcionalna ispitivanja selenom
- Spock ruganje i nabacivanje (primjeri s video tutorijalima)
- Testiranje na temelju podataka ili parametrizirano sa Spock Frameworkom
- Dubinski vodiči pomračenja za početnike
- Java Vodič za refleksiju s primjerima
- Vodič za selenij krastavaca: Integracija Java Selenium WebDriver za krastavac