spock tutorial testing with spock
Praktická řada výukových programů Spock: Testování s rámcem Spock a programovacím jazykem Groovy
Tato řada výukových programů by zcela obohatila vaše znalosti o Spock Framework.
Každý výukový program obsahuje jednoduché a jasné příklady pro snadné pochopení konceptu.
Připravte se na učení Spocka zdarma !!
Seznam všech tutoriálů Spock v této sérii:
Naučte se Spocka podrobně pomocí této série Intenzivní trénink Spock pro začátečníky i zkušené profesionály.
Tutorial # | Odkaz |
---|---|
Výukový program č. 1 | Úvod do Spocka a Groovyho |
Výukový program č. 2 | Psaní testů jednotek se Spockem |
Výukový program č. 3 | Parametrizované testování se Spockem |
Výukový program č. 4 | Spock zesměšňování a strčení |
Výukový program č. 5 | Spock s funkčním testem selenu |
Výukový program č. 6 | Spock Interview Otázky |
Přehled výukových programů ve Spock Series
Tutorial_Num | Co se naučíte |
---|---|
Výukový program č. 1 | Úvod do Spocka a Groovyho Tento úvodní tutoriál vysvětlí vše o Spocku, což je testovací rámec, který je postaven na Groovy. Vynucuje BDD v jádru a zajišťuje, aby všechny testy napsané pomocí rámce dodržovaly konvence BDD. |
Výukový program č. 2 | Psaní testů jednotek se Spockem V tomto tutoriálu projdeme všechny podrobnosti / kroky, které jsou nutné k zahájení testování Unit ve Spocku, spolu s jednoduchými příklady. |
Výukový program č. 3 | Parametrizované testování se Spockem Tento tutoriál jasně vysvětlí, co jsou to parametrizované testy a jak můžete využít vestavěné funkce Spocku k dosažení testování na základě dat. |
Výukový program č. 4 | Spock zesměšňování a strčení Tento výukový program Spock podrobně vysvětlí Mocking a Stubbing, které jsou jedním z nejdůležitějších stavebních kamenů rozsáhlých testů jednotek. |
Výukový program č. 5 | Spock s funkčním testem selenu Naučte se, jak používat Spock pro testování integrace (jako odpočinkové služby) a pro funkční testování z tohoto informativního kurzu. Například integrace Spocka se selenem. |
Výukový program č. 6 | Spock Interview Otázky Tento výukový program obsahuje seznam nejpopulárnějších dotazů Spock Interview s odpověďmi a příklady. Tyto otázky by skutečně vedly kohokoli, aby úspěšně vyčistil rozhovor s Spockem na první pokus. |
Co se naučíte:
- Co je Spock?
- Podívejte se na video tutoriál Spock a Groovy
- Co je Groovy?
- Začínáme se Spockem
- Anatomie specifikace Spocka
- Popis specifikačních bloků
- Důležité tipy
- Závěr
- Doporučené čtení
Co je Spock?
Spock je testovací rámec, který je postaven na Groovy. Vynucuje BDD v jádru a zajišťuje, zda všechny testy napsané pomocí rámce dodržují konvence BDD.
Na rozdíl od JUnit má Spock také vlastní Mocking a testovací dvojité knihovny a plnou podporu pro scénáře parametrizovaných testů.
Je to díky tomuto úplnému balíčku samo o sobě, specifikace Spock jsou super čitelné a expresivní a v důsledku toho dělají test, aby dosáhli stále více toho, co bylo zamýšleno pro snížení kódu klišé.
Navzdory všem těmto skvělým funkcím lze testy Spock spustit pomocí existujícího testovacího běhu JUnit a existujících nástrojů příkazového řádku / sestavení, jako jsou Maven a Gradle, díky nimž je použití ještě atraktivnější. Stručně řečeno, Spock kombinuje všechny dobré vlastnosti JUnit, BDD (rámce jako JBehave & Okurka ) stejně jako výsměch.
V následujících částech se podíváme na několik příkladů ilustrujících každou z těchto funkcí.
Podívejte se na video tutoriál Spock a Groovy
Co je Groovy?
Groovy je skriptovací jazyk pro platformu Java.
Mezi hlavní rysy groovy patří:
# 1) Může být použit jako dynamicky zadaný (kde proměnná může obsahovat jakýkoli typ dat) i staticky zadaný (který vynucuje silně zadané konstrukce na proměnných uchovávajících data).
Příklad : Pole a mapu jsme přiřadili stejným způsobem a interně groovy určuje typ a vhodně s ním zachází.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Výstup výše uvedeného ukázkového kódu je:
třída java.util.ArrayList
třída java.util.LinkedHashMap
#dva) Veškerý platný kód Java je také platným kódem Groovy (ale nikoli naopak, protože má také další funkce).
# 3) Mezi další funkce patří metaprogramování, uzávěry, kontrola statického typu atd.
# 4) Na rozdíl od Jáva středníky jsou v groovy volitelné a primitivní typy jsou ve výchozím nastavení považovány za objekty.
Protože se tato výuková řada více zaměřuje na Spock, naučíme se jen ty Groovy funkce, které jsou nezbytné pro vytváření specifikací testů založených na Spocku.
Začínáme se Spockem
Abychom mohli začít, podívejme se, jaké knihovny jsou požadovány v závislosti na tom, jaký systém sestavení používáte (např. Gradle / maven).
Pro projekty založené na Maven
Projekty Maven budou muset obsahovat plugin pro kompilaci kódu Gradle, stejně jako plugin surefire, aby bylo možné spouštět groovy založené specifikace. Kromě tohoto groovy & Spock, závislosti je také třeba přidat.
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
Pro projekty založené na Gradle
U ukázkového souboru gradle, jak je uvedeno níže, mezi nejdůležitější požadavky patří gradle plugin a závislosti pro groovy pro 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' }
Anatomie specifikace Spocka
Testy Spock lze psát pro jakýkoli jazyk, který běží na JVM. To znamená, že i když je váš aplikační kód v Javě nebo Scale nebo Kotlin atd., Stále se můžete rozhodnout, že budete psát své testy jednotek / integrace ve Spocku (nad ostatními, jako jsou JUnit, JBehave atd.).
Třídy Spock testu se nazývají „Specifikace“ (podobně jako specifikace ve světě BDD) a můžete rozšířit třídu „Specifikace“ rámce Spock. (Specifikace je základní třída rámce Spock).
Každý soubor Spec může obsahovat více testů (podobně jako soubor testovací třídy JUnit) a každý test může volitelně obsahovat bloky BDD, tj. Dané, kdy a poté. Je to podobné jako u jiných rámců BDD, kde lze každou z těchto sekcí korelovat s sekcemi Uspořádat, Jednat a Asertovat v testech JUnit.
Níže je blokové schéma zobrazující hierarchii Spec a testů.
Podívejme se, jak vypadá ukázková specifikace v kódu:
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 } }
Zde je třeba poznamenat několik důležitých bodů:
# 1) Podívejte se na název testovacích scénářů (řetězec za klíčovým slovem def): „zkontrolujte rovnost dvou řetězců bez rozlišování velkých a malých písmen“. Jedná se o jednoduché anglické řetězce, díky nimž jsou názvy testů docela čitelné a dává skutečný smysl testovat, čeho dosáhne.
Porovnejte to s obvyklým testem JUnit, kde bude název testu vypadat jako něco jako c.
caseEquality_withValidInput_shouldBeEqual()
#dva) Vzhledem k tomu, kdy a potom jsou bloky ekvivalentní uspořádat, jednat a tvrdit. Z těchto pohledů na tehdejší (nebo prosazující blok), který implikuje prosazování rovnosti a vyhýbá se veškerému kódu typového štítku spojenému s tvrzeními.
Příklad „Tvrzení v JUnit by vypadalo 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); }
Jak můžete vidět z výše uvedeného, díky testům Spocka vypadají testy méně upřímně a také se vyhýbají veškerému kódu standardních desek v tvrzeních (a nastavení atd.)
Popis specifikačních bloků
U každého z jednotlivých bloků v testu můžete zvolit popis bloku jako řetězec, který poskytne další podrobnosti o bloku, který se právě spouští. To je užitečné pro poskytnutí podrobnější struktury testu.
Podívejme se níže na příklad:
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šechny bloky ve specifikaci založené na Spocku jsou volitelné. Pokud jsou však přítomny, „kdy“ a „poté“ by se měly objevit společně v pořadí.
#dva) Pokud potřebujete jen potvrdit tvrzení (a když blokování nepotřebujete), můžete použít „ očekávat “Blok. Lze jej použít k prosazení předběžných podmínek i před blokováním, kdy a poté (a lze jej použít několikrát v testu).
Podívejme se na ukázkové využití očekávání, jako je ověření předběžné podmínky před provedením bloku „kdy“.
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 }
Jak je uvedeno výše, blok expect se pokouší prosadit hodnotu třídy vstupních polí i hodnotu jednoho ze vstupů, aby ležel v rozsahu.
Závěr
V tomto výukovém programu Spock jsme probrali základy programovacího jazyka Groovy spolu s anatomií nebo základními stavebními bloky specifikace Spock.
Vytvořili jsme ukázkový projekt s požadovanými závislostmi, abychom mohli psát groovy specifikace Spock a napsali ukázkovou specifikaci.
V dalších výukových programech v této sérii se budeme hlouběji věnovat funkcím poskytovaným Spock frameworkem a seznámíme se s tím, jak používají groovy jazyk k vytvoření čistých a čitelných specifikací testu.
psaní testovacích případů junit v java
Zůstaňte naladěni na naše nadcházející výukové programy Spock a dozvíte se více o testovacích přípravcích, tvrzeních a hlášeních ve Spocku.
Doporučené čtení
- Psaní testů jednotek pomocí Spock Framework
- Spock Interview Otázky s odpověďmi (nejoblíbenější)
- Spock pro integraci a funkční testování se selenem
- Spock Mocking and Stubbing (Příklady s videonávody)
- Testování na základě dat nebo parametrizace pomocí Spock Framework
- Výukové programy pro zatmění do hloubky pro začátečníky
- Výukový program Java Reflection s příklady
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration