spock tutorial testing with spock
Serie di tutorial pratici su Spock: Test con il framework Spock e il linguaggio di programmazione Groovy
Questa serie di tutorial arricchirebbe completamente le tue conoscenze su Spock Framework.
Esempi semplici e chiari sono stati inclusi in ogni tutorial per una facile comprensione del concetto.
Preparati ad imparare Spock gratuitamente !!
Elenco di tutti i tutorial di Spock in questa serie:
Impara Spock in dettaglio con l'aiuto di questa serie di corsi intensivi di Spock per principianti e professionisti esperti.
Tutorial # | Link |
---|---|
Tutorial n. 1 | Introduzione a Spock e Groovy |
Tutorial n. 2 | Scrivere unit test con Spock |
Tutorial n. 3 | Test parametrizzati con Spock |
Tutorial n. 4 | Spock beffardo e stubbing |
Tutorial n. 5 | Spock con test funzionale al selenio |
Tutorial # 6 | Domande per l'intervista a Spock |
Panoramica dei tutorial nella serie Spock
Tutorial_Num | Cosa imparerai |
---|---|
Tutorial n. 1 | Introduzione a Spock e Groovy Questo tutorial introduttivo spiegherà tutto su Spock, che è un framework di test costruito su Groovy. Applica BDD al centro e garantisce che tutti i test scritti utilizzando il framework seguano le convenzioni BDD. |
Tutorial n. 2 | Scrivere unit test con Spock In questo tutorial, esamineremo tutti i dettagli / passaggi necessari per iniziare con i test unitari in Spock insieme a semplici esempi. |
Tutorial n. 3 | Test parametrizzati con Spock Questo tutorial spiegherà chiaramente cosa sono i test parametrizzati e come sfruttare le funzionalità integrate di Spock per ottenere test basati sui dati. |
Tutorial n. 4 | Spock beffardo e stubbing Questo tutorial di Spock spiegherà in dettaglio Mocking e Stubbing, che sono uno degli elementi costitutivi più essenziali di test unitari estesi. |
Tutorial n. 5 | Spock con test funzionale al selenio Impara come usare Spock per i test di integrazione (come i servizi di riposo) e per i test funzionali da questo tutorial informativo. Ad esempio, l'integrazione di Spock con selenio. |
Tutorial # 6 | Domande per l'intervista a Spock Questo tutorial include un elenco delle domande di intervista di Spock più popolari con risposte ed esempi. Queste domande guiderebbero davvero chiunque a cancellare con successo l'intervista di Spock al primo tentativo. |
Cosa imparerai:
- Cos'è Spock?
- Guarda il video tutorial di Spock e Groovy
- Cos'è Groovy?
- Iniziare con Spock
- Anatomia di una specifica di Spock
- Descrizioni dei blocchi delle specifiche
- Suggerimenti importanti
- Conclusione
- Lettura consigliata
Cos'è Spock?
Spock è un framework di test costruito su Groovy. Applica BDD al centro e garantisce che tutti i test scritti utilizzando il framework seguano le convenzioni BDD.
Inoltre, a differenza di JUnit, Spock ha le proprie librerie Mocking e test double, oltre al supporto completo per scenari di test parametrizzati.
È grazie a questo pacchetto completo in sé, le specifiche Spock sono super leggibili ed espressive e per questo fanno il test per ottenere sempre di più di ciò che era inteso per ridurre il codice boilerplate cliché.
Nonostante tutte queste fantastiche funzionalità, i test di Spock possono essere eseguiti utilizzando il test runner JUnit esistente e gli strumenti di compilazione / riga di comando esistenti come Maven e Gradle, che lo rendono ancora più avvincente da usare. In poche parole, Spock combina tutte le buone caratteristiche di JUnit, BDD (framework come JBehave e Cetriolo ) oltre che beffardo.
Daremo uno sguardo ad un paio di esempi che illustrano ciascuna di queste caratteristiche nelle sezioni successive.
Guarda il video tutorial di Spock e Groovy
Cos'è Groovy?
Groovy è un linguaggio di scripting per la piattaforma Java.
Alcune delle caratteristiche principali di groovy includono:
# 1) Può essere utilizzato sia come tipizzato dinamicamente (dove una variabile può contenere qualsiasi tipo di dati) che come tipizzato staticamente (che impone costrutti fortemente tipizzati sulle variabili che contengono dati).
Esempio : Abbiamo assegnato array e map nello stesso modo e internamente groovy determina il tipo e lo gestisce in modo appropriato.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
L'output dell'esempio di codice precedente è:
classe java.util.ArrayList
classe java.util.LinkedHashMap
#Due) Tutto il codice Java valido è anche un codice Groovy valido (ma non il contrario in quanto ha anche funzionalità aggiuntive).
# 3) Altre caratteristiche includono meta-programmazione, chiusure, controllo statico del tipo, ecc.
# 4) a differenza di Giava i punti e virgola sono opzionali in groovy ei tipi primitivi sono considerati come oggetti per impostazione predefinita.
Poiché questa serie di tutorial è più incentrata su Spock, impareremo solo quelle caratteristiche di Groovy che sono essenziali per la creazione di specifiche di test basate su Spock.
Iniziare con Spock
Per iniziare, vediamo quali librerie sono necessarie a seconda del sistema di compilazione che stai utilizzando (es. Gradle / maven).
Per progetti basati su Maven
I progetti Maven dovranno includere un plug-in per la compilazione del codice Gradle e un plug-in infallibile per eseguire specifiche basate su groovy. Oltre a questo fantastico e Spock, dipendenze dovrebbe anche essere aggiunto.
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 progetti basati su Gradle
Per un file gradle di esempio come di seguito, i requisiti più importanti includono il plug-in gradle e le dipendenze per groovy per codice e 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' }
Anatomia di una specifica di Spock
I test di Spock possono essere scritti per qualsiasi linguaggio eseguito su JVM. Ciò significa che anche se il codice dell'applicazione è in Java o Scala o Kotlin ecc., Puoi comunque scegliere di scrivere i tuoi test di unità / integrazione in Spock (rispetto ad altri come JUnit, JBehave, ecc.).
Le classi di test di Spock sono chiamate 'Specifiche' (simili alle specifiche nel mondo BDD) ed è possibile estendere la classe 'Specifiche' del framework Spock. (La specifica è la classe base del framework Spock).
Ogni file Spec può contenere più test (simile a un file di classe di test JUnit) e ogni test può opzionalmente contenere i blocchi BDD, ovvero dati, quando e poi. Questo è simile ad altri framework BDD, in cui ciascuna di queste sezioni può essere correlata alle sezioni Arrange, Act e Assert nei test JUnit rispettivamente.
Di seguito è riportato un diagramma a blocchi che illustra la gerarchia di Spec e test.
Vediamo come appare una specifica di esempio nel codice:
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 } }
Alcuni punti importanti da notare qui:
# 1) Guarda il nome degli scenari di test (la stringa dopo la parola chiave def): 'controlla l'uguaglianza senza distinzione tra maiuscole e minuscole di 2 stringhe'. Queste sono semplici stringhe in inglese e questo rende i nomi dei test abbastanza leggibili e dà un senso reale per testare ciò che raggiunge.
Confrontalo con il solito test JUnit in cui il nome del test avrà un aspetto simile a c.
caseEquality_withValidInput_shouldBeEqual()
#Due) Dato, quando e poi i blocchi sono equivalenti a Arrange, Act e Assert. Da questi guardiamo al then (o assert block) che implica l'asserzione di uguaglianza ed evita tutto il codice boilerplate associato alle asserzioni.
Esempio , Un'asserzione in JUnit sarebbe stata come mostrato di seguito:
@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); }
Come puoi vedere da quanto sopra, i test di Spock rendono i test meno dettagliati ed evitano tutto il codice standard nelle asserzioni (e nel setup, ecc.)
Descrizioni dei blocchi delle specifiche
Per ciascuno dei singoli blocchi in un test, puoi scegliere di fornire la descrizione del blocco come stringa per fornire maggiori dettagli sul blocco che viene eseguito. Ciò è utile per fornire una struttura più dettagliata al test.
Vediamo un esempio di seguito:
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 }
Suggerimenti importanti
# 1) Tutti i blocchi in una specifica basata su Spock sono opzionali. Tuttavia, se presenti, 'quando' e 'allora' dovrebbero apparire insieme in sequenza.
#Due) Se devi solo convalidare un'asserzione (e non hai bisogno di bloccare quando), puoi utilizzare ' aspettarsi 'Blocco. Può essere utilizzato per affermare le pre-condizioni anche prima di quando e poi si blocca (e può essere utilizzato più volte in un test).
Vediamo un esempio di utilizzo dell'aspettativa, come la convalida della pre-condizione prima di eseguire il blocco 'quando'.
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 }
Come mostrato sopra, il blocco di attesa sta cercando di affermare che il valore della classe dei campi di input e il valore di uno degli input si trovano all'interno dell'intervallo.
Conclusione
In questo tutorial di Spock, abbiamo coperto le basi del linguaggio di programmazione Groovy, insieme all'anatomia o agli elementi costitutivi di base di una specifica di Spock.
Abbiamo creato un progetto di esempio con le dipendenze richieste per scrivere specifiche Spock basate su groovy e abbiamo scritto una specifica di esempio.
Negli altri tutorial di questa serie, approfondiremo le funzionalità fornite dal framework Spock e scopriremo come fanno uso di un linguaggio groovy per creare specifiche di test pulite e leggibili.
come eseguire un attacco ddos su un sito web
Restate sintonizzati sui nostri prossimi tutorial di Spock per saperne di più su dispositivi di prova, asserzioni e rapporti in Spock.
Lettura consigliata
- Scrittura di unit test con Spock Framework
- Domande dell'intervista a Spock con risposte (le più popolari)
- Spock per integrazione e test funzionali con selenio
- Spock beffardo e stubbing (esempi con tutorial video)
- Test basato sui dati o parametrizzato con Spock Framework
- Tutorial approfonditi su Eclipse per principianti
- Tutorial Java Reflection con esempi
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo