spock tutorial testing with spock
Seria de tutoriale hands-on Spock: Testarea cu cadrul Spock și limbajul de programare Groovy
Această serie de tutoriale ar îmbogăți complet cunoștințele dvs. despre Spock Framework.
Exemple simple și clare au fost incluse în fiecare tutorial pentru înțelegerea ușoară a conceptului.
Pregătește-te să înveți Spock gratuit !!
Lista tuturor tutorialelor Spock din această serie:
Învață Spock în detaliu cu ajutorul acestei serii Intensive Spock Training pentru începători și profesioniști cu experiență.
Tutorial # | Legătură |
---|---|
Tutorial # 1 | Introducere în Spock și Groovy |
Tutorial # 2 | Testarea unității de scriere cu Spock |
Tutorial # 3 | Testare parametrizată cu Spock |
Tutorial # 4 | Spock batjocorind și stubbing |
Tutorial # 5 | Spock cu test funcțional Selenium |
Tutorial # 6 | Întrebări de interviu Spock |
Prezentare generală a tutorialelor din seria Spock
Tutorial_Num | Ce vei învăța |
---|---|
Tutorial # 1 | Introducere în Spock și Groovy Acest tutorial introductiv va explica totul despre Spock, care este un cadru de testare construit deasupra Groovy. Aplică BDD la bază și asigură că toate testele scrise folosind cadrul respectă convențiile BDD. |
Tutorial # 2 | Testarea unității de scriere cu Spock În acest tutorial, vom parcurge toate detaliile / pașii necesari pentru a începe testarea unității în Spock, împreună cu exemple simple. |
Tutorial # 3 | Testare parametrizată cu Spock Acest tutorial va explica în mod clar ce sunt testele parametrizate și cum puteți utiliza funcțiile integrate ale Spock pentru a realiza teste bazate pe date. |
Tutorial # 4 | Spock batjocorind și stubbing Acest tutorial Spock va explica în detaliu despre batjocură și stubbing, care sunt unul dintre cele mai esențiale elemente de bază ale testelor extinse de unitate. |
Tutorial # 5 | Spock cu test funcțional Selenium Aflați cum să utilizați Spock pentru testarea integrării (cum ar fi serviciile de odihnă) și pentru testarea funcțională din acest tutorial informativ. De exemplu, integrarea Spock cu seleniu. |
Tutorial # 6 | Întrebări de interviu Spock Acest tutorial include o listă cu cele mai populare întrebări de interviu Spock cu răspunsuri și exemple. Aceste întrebări ar ghida într-adevăr pe oricine să șteargă cu succes interviul spock la prima încercare. |
Ce veți învăța:
- Ce este Spock?
- Urmăriți tutorialul video Spock and Groovy
- Ce este Groovy?
- Noțiuni introductive despre Spock
- Specificația Anatomia unui Spock
- Descrieri de blocuri spec
- Sfaturi importante
- Concluzie
- Lectură recomandată
Ce este Spock?
Spock este un cadru de testare construit deasupra Groovy. Aplică BDD la bază și asigură dacă toate testele scrise folosind cadrul respectă convențiile BDD.
De asemenea, spre deosebire de JUnit, Spock are propriile biblioteci duble de testare și testare, precum și suport complet pentru scenarii de testare parametrizate.
Se datorează acestui pachet complet în sine, specificațiile Spock sunt foarte lizibile și expresive și, ca urmare, fac testul pentru a realiza din ce în ce mai mult ceea ce a fost destinat reducerii codului clișei.
În ciuda tuturor acestor caracteristici interesante, testele Spock pot fi rulate folosind alergătorul de test JUnit existent și instrumentele existente de construire a liniei de comandă / Maven și Gradle, care îl fac și mai convingător de utilizat. Pe scurt, Spock combină toate caracteristicile bune ale JUnit, BDD (cadre precum JBehave & Castravete ) precum și batjocoritor.
Vom arunca o privire la câteva exemple care ilustrează fiecare dintre aceste caracteristici în secțiunile următoare.
Urmăriți tutorialul video Spock and Groovy
Ce este Groovy?
Groovy este un limbaj de script pentru platforma Java.
Unele dintre principalele caracteristici ale groovy includ:
# 1) Poate fi folosit ca tastat dinamic (în cazul în care o variabilă poate conține orice tip de date), precum și tipizat static (care impune construcții puternic tastate pe variabilele care dețin date).
Exemplu : Am atribuit matrice și hartă în același mod, iar groovy intern determină tipul și îl gestionează în mod corespunzător.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Ieșirea eșantionului de cod de mai sus este:
clasă java.util.ArrayList
clasă java.util.LinkedHashMap
#Două) Tot codul Java valid este și un cod Groovy valid (dar nu invers, deoarece are și caracteristici suplimentare).
# 3) Alte caracteristici includ meta-programarea, închiderile, verificarea statică a tipului etc.
# 4) Spre deosebire de Java punctele și virgulele sunt opționale în groovy și tipurile primitive sunt considerate obiecte în mod implicit.
Deoarece această serie de tutoriale se axează mai mult pe Spock, vom învăța acele caracteristici Groovy care sunt esențiale pentru crearea specificațiilor de testare bazate pe Spock.
Noțiuni introductive despre Spock
Pentru a începe, să vedem, ce biblioteci sunt necesare în funcție de sistemul de construire pe care îl utilizați (de exemplu, Gradle / maven).
Pentru proiectele bazate pe Maven
Proiectele Maven vor trebui să includă un plugin pentru compilarea codului Gradle, precum și un plugin sigur pentru a rula specificațiile bazate pe groovy. Pe lângă acest groovy & Spock, dependențe ar trebui de asemenea adăugat.
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
Pentru proiecte bazate pe Gradle
Pentru un eșantion de fișier gradle, după cum urmează, cele mai importante cerințe includ pluginul gradle și dependențele pentru groovy pentru cod ș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' }
Specificația Anatomia unui Spock
Testele Spock pot fi scrise pentru orice limbă care rulează pe JVM. Acest lucru înseamnă că, chiar dacă codul aplicației dvs. este în Java sau Scala sau Kotlin etc., puteți alege totuși să vă scrieți testele de unitate / integrare în Spock (peste altele precum JUnit, JBehave etc.).
Clasele de testare Spock se numesc „Specificații” (similar cu specificațiile din lumea BDD) și puteți extinde clasa „Specificații” a cadrului Spock. (Specificația este clasa de bază a cadrului Spock).
Fiecare fișier Spec poate conține mai multe teste (similar cu un fișier clasa de test JUnit) și fiecare test poate conține opțional blocurile BDD adică date, când și apoi. Acest lucru este similar cu celelalte cadre BDD, în care fiecare dintre aceste secțiuni poate fi corelată cu secțiunile Aranjare, Acțiune și Afișare din testele JUnit.
Mai jos este o diagramă bloc care prezintă ierarhia specificațiilor și a testelor.
Să vedem cum arată o specificație în cod:
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 } }
Câteva puncte importante de remarcat aici:
# 1) Uitați-vă la numele scenariilor de testare (șirul după cuvântul cheie def): „verificați egalitatea de 2 șiruri fără majuscule și minuscule”. Acestea sunt șiruri simple în limba engleză și acest lucru face ca numele testelor să fie ușor de citit și oferă un sens real pentru a testa ceea ce realizează.
Comparați-l cu testul obișnuit JUnit, unde numele testului va arăta ca ceva de genul c.
caseEquality_withValidInput_shouldBeEqual()
#Două) Având în vedere, când și apoi blocurile sunt echivalente cu Aranjare, Acțiune și Afișare. Dintre acestea, priviți atunci blocul (sau blocul de afirmare) care implică afirmarea egalității și evită toate codurile de cazan asociate cu afirmațiile.
Exemplu , O afirmație în JUnit ar fi arătat așa cum se arată mai jos:
@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); }
După cum puteți vedea din cele de mai sus, testele Spock fac ca testele să pară mai puțin detaliate, precum și să evite toate codurile din cazan în afirmații (și configurare etc.)
Descrieri de blocuri spec
Pentru fiecare dintre blocurile individuale dintr-un test, puteți alege să furnizați descrierea blocului ca un șir pentru a furniza mai multe detalii despre blocul care se execută. Acest lucru este util pentru a oferi o structură mai detaliată testului.
Să vedem un exemplu mai jos:
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 }
Sfaturi importante
# 1) Toate blocurile dintr-o specificație bazată pe Spock sunt opționale. Totuși, dacă este prezent „când” și „atunci” ar trebui să apară împreună în ordine.
#Două) Dacă trebuie doar să validați o afirmație (și nu aveți nevoie de momentul blocării), puteți utiliza „ aştepta ' bloc. Poate fi folosit pentru afirmarea condițiilor prealabile chiar înainte și atunci când și apoi blocuri (și poate fi utilizat de mai multe ori într-un test).
Să vedem un eșantion de utilizare a expect, cum ar fi validarea precondiției înainte de a executa blocul „când”.
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 }
Așa cum se arată mai sus, blocul de așteptare încearcă să afirme valoarea clasei câmpurilor de intrare, precum și valoarea uneia dintre intrările care se află în interval.
Concluzie
În acest tutorial Spock, am acoperit elementele de bază ale limbajului de programare Groovy, împreună cu anatomia sau elementele de bază ale unei specificații Spock.
Am creat un exemplu de proiect cu dependențele necesare pentru a scrie specificații Spock bazate pe groovy și am scris o specificație de probă.
În celelalte tutoriale din această serie, vom aprofunda caracteristicile oferite de cadrul Spock și vom cunoaște modul în care folosesc limbajul grozav pentru a crea specificații de test curate și lizibile.
cel mai bun program pentru monitorizarea temperaturii computerului
Rămâneți la curent cu tutorialele noastre viitoare Spock pentru a afla mai multe despre dispozitivele de testare, afirmațiile și raportarea în Spock.
Lectură recomandată
- Testarea unităților de scriere cu Spock Framework
- Întrebări de interviu cu răspunsuri Spock (Cele mai populare)
- Spock pentru integrare și testare funcțională cu seleniu
- Spock batjocură și stubbing (exemple cu tutoriale video)
- Testare bazată pe date sau parametrizată cu Spock Framework
- Tutoriale detaliate pentru eclipsă pentru începători
- Tutorial de reflecție Java cu exemple
- Tutorial Castravete Seleniu: Integrare Castravete Java Seleniu WebDriver