spock tutorial testing with spock
Sèrie pràctica de tutorials Spock: Proves amb el framework Spock i el llenguatge de programació Groovy
Aquesta sèrie de tutorials enriquiria completament els vostres coneixements sobre Spock Framework.
S'han inclòs exemples senzills i clars a cada tutorial per facilitar la vostra comprensió del concepte.
Prepara't per aprendre Spock gratis !!
Llista de tots els tutorials Spock d'aquesta sèrie:
Apreneu Spock en detall amb l’ajut d’aquesta sèrie de formació intensiva Spock per a principiants i professionals experimentats.
tutorial # | Enllaç |
---|---|
Tutorial # 1 | Introducció a Spock i Groovy |
Tutorial # 2 | Proves d’unitat d’escriptura amb Spock |
Tutorial # 3 | Proves parametritzades amb Spock |
Tutorial # 4 | Spock burleta i obstrucció |
Tutorial # 5 | Spock amb Selenium Functional Test |
Tutorial # 6 | Preguntes d’entrevistes a Spock |
Visió general dels tutorials de la sèrie Spock
Tutorial_Num | Què aprendràs |
---|---|
Tutorial # 1 | Introducció a Spock i Groovy Aquest tutorial introductori explicarà tot sobre Spock, que és un marc de prova construït a sobre de Groovy. Aplica el BDD al nucli i garanteix que totes les proves escrites mitjançant el framework segueixin les convencions de BDD. |
Tutorial # 2 | Proves d’unitat d’escriptura amb Spock En aquest tutorial, recorrerem tots els detalls / passos necessaris per començar a provar unitats a Spock juntament amb exemples senzills. |
Tutorial # 3 | Proves parametritzades amb Spock Aquest tutorial explicarà clarament què són les proves parametritzades i com podeu aprofitar les funcions integrades de Spock per aconseguir proves basades en dades. |
Tutorial # 4 | Spock burleta i obstrucció Aquest tutorial de Spock explicarà detalladament sobre Mocking and Stubbing, que són un dels elements bàsics de les proves unitàries més importants. |
Tutorial # 5 | Spock amb Selenium Functional Test Apreneu a utilitzar Spock per a proves d’integració (com ara serveis de descans) i per a proves funcionals a partir d’aquest tutorial informatiu. Per exemple, la integració de Spock amb seleni. |
Tutorial # 6 | Preguntes d’entrevistes a Spock Aquest tutorial inclou una llista de les preguntes d’entrevistes Spock més populars amb respostes i exemples. Aquestes preguntes guiarien a qualsevol persona per esborrar l’entrevista amb èxit al primer intent. |
Què aprendreu:
- Què és Spock?
- Mireu el vídeo tutorial de Spock and Groovy
- Què és Groovy?
- Introducció a Spock
- Especificació de l'anatomia d'un Spock
- Descripcions de blocs d’especificacions
- Consells importants
- Conclusió
- Lectura recomanada
Què és Spock?
Spock és un marc de prova construït sobre Groovy. Aplica el BDD al nucli i garanteix que totes les proves escrites mitjançant el marc segueixen les convencions de BDD.
A més, a diferència de JUnit, Spock té les seves pròpies biblioteques dobles de simulació i prova, així com suport complet per a escenaris de prova parametritzats.
A causa d’aquest paquet complet en si mateix, les especificacions de Spock són súper llegibles i expressives i, com a resultat, fan la prova per aconseguir cada cop més allò que es pretenia reduir el codi de la placa de la caldera del tòpic.
Malgrat totes aquestes funcions interessants, les proves Spock es poden executar mitjançant el corredor de proves JUnit existent i les eines de construcció / línia de comandaments existents com Maven i Gradle, que fan que sigui encara més convincent d’utilitzar. En poques paraules, Spock combina totes les bones característiques de JUnit, BDD (marcs com JBehave & Cogombre ), a més de burlar-se.
Vegem un parell d’exemples que il·lustren cadascuna d’aquestes característiques a les seccions següents.
Mireu el vídeo tutorial de Spock and Groovy
Què és Groovy?
Groovy és un llenguatge de script per a la plataforma Java.
Algunes de les principals característiques del groovy són:
# 1) Es pot utilitzar tant de forma dinàmica (on una variable pot contenir qualsevol tipus de dades) com de tipus estàtic (que aplica construccions de tipus fort a variables que contenen dades).
Exemple : Hem assignat matriu i mapa de la mateixa manera i internament groovy determina el tipus i el gestiona adequadament.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
La sortida de l'exemple de codi anterior és:
classe java.util.ArrayList
classe java.util.LinkedHashMap
# 2) Tot el codi Java vàlid també és un codi Groovy vàlid (però no al revés, ja que també té funcions addicionals).
# 3) Altres funcions inclouen meta-programació, tancaments, comprovació de tipus estàtic, etc.
# 4) A diferència de Java els punts i coma són opcionals a groovy i els tipus primitius es consideren objectes per defecte.
Com que aquesta sèrie de tutorial està més centrada en Spock, només aprendrem aquelles funcions de Groovy que són essencials per crear les especificacions de prova basades en Spock.
Introducció a Spock
Per començar, vegem quines biblioteques són necessàries en funció del sistema de construcció que utilitzeu (per exemple, Gradle / maven).
Per a projectes basats en Maven
Els projectes Maven hauran d’incloure un complement per compilar el codi Gradle, així com un connector infal·lible per executar especificacions basades en groovy. A més d’aquest groovy & Spock, dependències també s’hauria d’afegir.
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
Per a projectes basats en Gradle
Per a un exemple de fitxer gradle que es mostra a continuació, els requisits més importants inclouen el connector gradle i les dependències de groovy per al codi i la prova.
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' }
Especificació de l'anatomia d'un Spock
Les proves Spock es poden escriure per a qualsevol idioma que s'executi a JVM. Això vol dir que, fins i tot si el codi de l'aplicació està en Java, Scala o Kotlin, etc., podeu escollir escriure les proves d'unitat / integració a Spock (per sobre d'altres com JUnit, JBehave, etc.).
Les classes de proves de Spock s’anomenen “Especificacions” (semblants a les especificacions del món BDD) i podeu ampliar la classe “Especificació” del framework Spock. (L'especificació és la classe base del framework Spock).
Cada fitxer Spec pot contenir diverses proves (similar a un fitxer de classe de proves JUnit) i cada prova pot contenir opcionalment els blocs BDD, és a dir, donats, quan i després. Això és similar a altres marcs BDD, on cadascuna d'aquestes seccions es pot correlacionar amb les seccions Arrange, Act i Assert de les proves JUnit respectivament.
A continuació es mostra un diagrama de blocs que representa la jerarquia d’especificacions i proves.
Vegem l'aspecte d'una especificació de mostra al codi:
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 } }
Pocs punts importants a tenir en compte aquí:
# 1) Mireu el nom dels escenaris de prova (la cadena després de la paraula clau def): 'comproveu la igualtat de 2 cadenes que no distingeix entre majúscules i minúscules'. Es tracta de cadenes angleses simples i això fa que els noms de les proves siguin bastant llegibles i doni un sentit real per comprovar el que aconsegueix.
Compareu-lo amb la prova de JUnit habitual, on el nom de la prova tindrà un aspecte semblant a c.
caseEquality_withValidInput_shouldBeEqual()
# 2) Donat, quan i després els blocs són equivalents a Arrange, Act i Assert. Fora d’això, fixeu-vos en el llavors (o bloc d’assercions), que implica afirmació d’igualtat i evita tot el codi de la caldera associat amb les afirmacions.
Exemple , Una afirmació a JUnit hauria semblat la següent:
@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); }
Com podeu veure a l’anterior, les proves de Spock fan que les proves tinguin un aspecte menys detallat i evitin tot el codi de la caldera en les afirmacions (i configuració, etc.)
Descripcions de blocs d’especificacions
Per a cadascun dels blocs individuals d'una prova, podeu escollir proporcionar una descripció de blocs com una cadena per proporcionar més detalls sobre el bloc que s'està executant. Això és útil per proporcionar una estructura més detallada a la prova.
Vegem un exemple a continuació:
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 }
Consells importants
# 1) Tots els blocs d'una especificació basada en Spock són opcionals. Tanmateix, si hi ha 'quan' i 'llavors' haurien d'aparèixer junts en seqüència.
# 2) Si només necessiteu validar una afirmació (i no teniu cap necessitat de quan es bloqueja), podeu utilitzar ' esperar ' bloc. Es pot utilitzar per afirmar condicions prèvies fins i tot abans de quan i després bloqueja (i es pot utilitzar diverses vegades en una prova).
Vegem un exemple d’ús d’espera com validar la condició prèvia abans d’executar el bloc 'quan'.
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 }
Com es mostra més amunt, el bloc espera intenta afirmar el valor de classe dels camps d'entrada, així com el valor d'una de les entrades que es troba dins de l'interval.
Conclusió
En aquest tutorial de Spock, hem tractat els conceptes bàsics del llenguatge de programació Groovy, juntament amb l'anatomia o els blocs bàsics d'una especificació de Spock.
Vam crear un projecte de mostra amb les dependències necessàries per tal d’escriure especificacions de Spock basades en groovy i vam escriure una especificació de mostra.
En els altres tutorials d’aquesta sèrie, aprofundirem en les funcions que proporciona el framework Spock i coneixerem com fan ús del llenguatge fantàstic per crear especificacions de prova netes i llegibles.
programes que poden editar fitxers pdf
Estigueu atents als nostres propers tutorials de Spock per obtenir més informació sobre els accessoris de prova, les afirmacions i els informes a Spock.
Lectura recomanada
- Proves d’unitat d’escriptura amb Spock Framework
- Preguntes d'entrevistes de Spock amb respostes (més populars)
- Spock per a la integració i proves funcionals amb seleni
- Spock burleta i obstrucció (exemples amb tutorials de vídeo)
- Proves basades en dades o parametritzades amb Spock Framework
- Tutorials Eclipse en profunditat per a principiants
- Tutorial de reflexió de Java amb exemples
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver