spock tutorial testing with spock
Praktická séria Spock Tutorial: Testovanie s rámcom Spock a programovacím jazykom Groovy
Táto séria tutoriálov by úplne obohatila vaše vedomosti o Spock Framework.
Každý výukový program obsahuje jednoduché a jasné príklady, ktoré uľahčujú pochopenie koncepcie.
Pripravte sa na učenie Spocka zadarmo !!
Zoznam všetkých Spockových tutoriálov v tejto sérii:
Naučte sa Spocka podrobne pomocou tejto série Intenzívny výcvik Spock pre začiatočníkov a skúsených profesionálov.
Návod | Odkaz |
---|---|
Výukový program č. 1 | Úvod do Spocka a Groovyho |
Výukový program č. 2 | Testy písania jednotiek so Spockom |
Výukový program č. 3 | Parametrizované testovanie so Spockom |
Výukový program č. 4 | Spock zosmiešňovanie a pichanie |
Výukový program č. 5 | Spock s funkčným testom selénu |
Výukový program č. 6 | Spock Interview Otázky |
Prehľad návodov v sérii Spock
Tutorial_Num | Čo sa naučíte |
---|---|
Výukový program č. 1 | Úvod do Spocka a Groovyho V tomto úvodnom výučbe sa dozviete všetko o Spocku, ktorý je testovacím rámcom postaveným na vrchole Groovy. Vynucuje BDD v jadre a zaisťuje, aby všetky testy napísané pomocou rámca zodpovedali konvenciám BDD. |
Výukový program č. 2 | Testy písania jednotiek so Spockom V tomto tutoriáli si prejdeme všetky podrobnosti / kroky, ktoré sú potrebné na začatie testovania jednotiek v Spocku, spolu s jednoduchými príkladmi. |
Výukový program č. 3 | Parametrizované testovanie so Spockom Tento tutoriál jasne vysvetlí, čo sú to parametrizované testy a ako môžete využiť integrované funkcie Spocku na dosiahnutie testovania na základe dát. |
Výukový program č. 4 | Spock zosmiešňovanie a pichanie Tento Spock tutoriál podrobne vysvetlí Mocking a Stubbing, ktoré sú jedným z najdôležitejších stavebných kameňov rozsiahlych Unit testov. |
Výukový program č. 5 | Spock s funkčným testom selénu Z tohto informačného tutoriálu sa dozviete, ako používať Spock na testovanie integrácie (napríklad odpočinkové služby) a na funkčné testovanie. Napríklad integrácia Spocka so selénom. |
Výukový program č. 6 | Spock Interview Otázky Tento výukový program obsahuje zoznam najpopulárnejších otázok o rozhovoroch Spock s odpoveďami a príkladov. Tieto otázky by skutočne viedli každého k úspešnému vyčisteniu rozhovoru s Spockom na prvý pokus. |
Čo sa dozviete:
- Čo je Spock?
- Pozrite si videonávod Spock a Groovy
- Čo je to Groovy?
- Začíname so Spockom
- Anatómia Spockovej špecifikácie
- Popisy blokov špecifikácií
- Dôležité tipy
- Záver
- Odporúčané čítanie
Čo je Spock?
Spock je testovací rámec, ktorý je postavený na vrchole Groovy. Presadzuje BDD v jadre a zaisťuje, či všetky testy napísané pomocou rámca zodpovedajú konvenciám BDD.
Na rozdiel od JUnit má Spock tiež svoje vlastné Mocking a testovacie dvojité knižnice, ako aj úplnú podporu pre parametrizované testovacie scenáre.
Je to dané týmto kompletným balíkom, špecifikácie Spocku sú super čitateľné a expresívne a vďaka tomu test robia, aby dosiahli čoraz viac toho, čo bolo zamýšľané na zníženie klišé štandardného kódu.
Napriek všetkým týmto skvelým funkciám sú testy Spocku spustiteľné pomocou existujúceho testovacieho bežca JUnit a existujúcich nástrojov príkazového riadku / zostavy ako Maven a Gradle, ktoré ich používanie ešte viac lákajú. Stručne povedané, Spock kombinuje všetky dobré vlastnosti JUnit, BDD (rámce ako JBehave & Uhorka ) ako aj zosmiešňovanie.
V ďalších častiach sa pozrieme na niekoľko príkladov ilustrujúcich každú z týchto funkcií.
Pozrite si videonávod Spock a Groovy
Čo je to Groovy?
Groovy je skriptovací jazyk pre platformu Java.
Medzi hlavné vlastnosti groovy patria:
# 1) Môže byť použitý ako dynamicky typovaný (kde premenná môže obsahovať akýkoľvek typ údajov), ako aj staticky typizovaný (ktorý vynucuje silne typované konštrukty na premenných uchovávajúcich údaje).
Príklad : Pole a mapu sme priradili rovnakým spôsobom a interne groovy určuje typ a vhodne s ním zaobchádza.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Výstup vyššie uvedenej ukážky kódu je:
trieda java.util.ArrayList
trieda java.util.LinkedHashMap
#dva) Celý platný kód Java je tiež platný kód Groovy (ale nie naopak, pretože má aj ďalšie funkcie).
# 3) Medzi ďalšie funkcie patrí metaprogramovanie, uzávierky, statická kontrola typu atď.
# 4) Na rozdiel od Java bodkočiarky sú v groove voliteľné a primitívne typy sa predvolene považujú za objekty.
Pretože sa táto séria výukových programov zameriava viac na Spock, naučíme sa iba tie Groovy funkcie, ktoré sú nevyhnutné pre tvorbu špecifikácií testov založených na Spock.
Začíname so Spockom
Na začiatok sa pozrime, aké knižnice sú potrebné v závislosti od toho, aký systém budovania používate (napr. Gradle / maven).
Pre projekty založené na Maven
Projekty Maven budú musieť obsahovať plugin na kompiláciu kódu Gradle, ako aj plugin surefire, aby bolo možné spustiť groovy založené špecifikácie. Okrem tohto groovy & Spock, závislosti by sa tiež malo pridať.
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
Pre projekty založené na Gradle
Pre ukážkový súbor gradle, ako je uvedené nižšie, medzi najdôležitejšie požiadavky patrí gradle plugin a závislosti pre groovy pre kód a 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' }
Anatómia Spockovej špecifikácie
Spockove testy je možné písať pre akýkoľvek jazyk, ktorý beží na JVM. To znamená, že aj keď je váš aplikačný kód v jazyku Java alebo Scala alebo Kotlin atď., Stále si môžete zvoliť, že budete svoje testovacie jednotky / integráciu zapisovať do programu Spock (cez iné ako JUnit, JBehave atď.).
Triedy Spockovho testu sa nazývajú „Špecifikácie“ (podobné ako špecifikácie vo svete BDD) a môžete rozšíriť triedu „Špecifikácie“ rámca Spock. (Špecifikácia je základnou triedou rámca Spock).
Každý súbor Spec môže obsahovať viac testov (podobne ako súbor triedy testov JUnit) a každý test môže voliteľne obsahovať bloky BDD, t. J. Dané, kedy a potom. Je to podobné ako v iných rámcoch BDD, kde každá z týchto častí môže byť korelovaná s časťami Arrange, Act a Assert v testoch JUnit.
Ďalej je uvedený blokový diagram znázorňujúci hierarchiu špecifikácií a testov.
Pozrime sa, ako vyzerá vzorová špecifikácia v kóde:
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 } }
Tu je potrebné poznamenať niekoľko dôležitých bodov:
# 1) Prezrite si názov testovacích scenárov (reťazec za kľúčovým slovom def): „skontrolujte rovnosť 2 reťazcov bez rozlišovania malých a veľkých písmen“. Toto sú obyčajné anglické reťazce, vďaka čomu sú názvy testov celkom čitateľné a dáva skutočný zmysel testovať, čo dosahuje.
Porovnajte to s obvyklým testom JUnit, kde bude názov testu vyzerať asi ako c.
caseEquality_withValidInput_shouldBeEqual()
#dva) Dané, kedy a potom sú bloky rovnocenné s Usporiadať, konať a tvrdiť. Z tohto pohľadu sa pozrite na vtedajší (alebo blok tvrdenia), ktorý implikuje tvrdenie o rovnosti a vyhýba sa všetkým štandardným kódom spojeným s tvrdeniami.
Príklad „Tvrdenie v JUnit by vyzeralo takto:
@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); }
Ako vidíte z vyššie uvedeného, testy Spocka spôsobujú, že testy vyzerajú menej verbálne, rovnako ako sa vyhýbajú všetkému štandardnému kódu v tvrdeniach (a nastavení atď.)
Popisy blokov špecifikácií
Pre každý z jednotlivých blokov v teste si môžete zvoliť, že zadáte popis bloku ako reťazec, ktorý poskytne ďalšie podrobnosti o bloku, ktorý sa práve vykonáva. To je užitočné pri poskytovaní podrobnejšej štruktúry testu.
Pozrime sa na príklad nižšie:
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 }
Dôležité tipy
# 1) Všetky bloky v Spockovej špecifikácii sú voliteľné. Ak sú však prítomné, „kedy“ a „potom“ by sa mali objaviť spoločne za sebou.
#dva) Ak potrebujete iba potvrdiť tvrdenie (a nepotrebujete blokovanie blokovania), môžete použiť „ očakávať ”Blok. Môže sa použiť na potvrdenie predbežných podmienok ešte pred blokovaním a potom (a dá sa použiť viackrát v teste).
Pozrime sa na ukážku použitia očakávania, napríklad overenie predbežnej podmienky pred vykonaním bloku „kedy“.
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 }
Ako je uvedené vyššie, blok expect sa pokúša presadiť hodnotu triedy vstupných polí, ako aj hodnotu jedného zo vstupov, aby ležal v rozsahu.
Záver
V tomto Spockovom výučbe sme prebrali základy programovacieho jazyka Groovy spolu s anatómiou alebo základnými stavebnými kameňmi Spockovej špecifikácie.
Vytvorili sme vzorový projekt s požadovanými závislosťami, aby sme mohli napísať groovy založené špecifikácie Spock, a napísali sme vzorovú špecifikáciu.
V ďalších tutoriáloch v tejto sérii sa budeme hlbšie venovať funkciám poskytovaným Spock frameworkom a spoznáme, ako používajú groovy jazyk na vytvorenie čistých a čitateľných testovacích špecifikácií.
najlepší softvér pre vzdialenú plochu pre Windows
Zostaňte naladení na naše nadchádzajúce výukové programy Spock, aby ste sa dozvedeli viac o testovacích prípravkoch, tvrdeniach a hláseniach v Spocku.
Odporúčané čítanie
- Písanie testov jednotiek s programom Spock Framework
- Spock Interview Otázky s odpoveďami (najobľúbenejšie)
- Spock pre integráciu a funkčné testovanie so selénom
- Spock Mocking and Stubbing (Príklady s videonávodmi)
- Testovanie na základe dát alebo parametrizovanie pomocou Spock Framework
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Výukový program Java Reflection s príkladmi
- Výukový program Cucumber Selenium: Cucumber Java Selenium WebDriver Integration