spock tutorial testing with spock
Seria praktycznych samouczków Spocka: Testowanie z frameworkiem Spock i Groovy Programming Language
Ta seria samouczków całkowicie wzbogaci Twoją wiedzę na temat Spock Framework.
Aby ułatwić zrozumienie koncepcji, do każdego samouczka dołączono proste i jasne przykłady.
Przygotuj się na naukę Spocka za darmo !!
Lista wszystkich samouczków Spocka z tej serii:
Poznaj szczegółowo Spock z pomocą tej serii intensywnych treningów Spock dla początkujących i doświadczonych profesjonalistów.
Instruktaż # | Połączyć |
---|---|
Samouczek nr 1 | Wprowadzenie do Spocka i Groovy'ego |
Samouczek nr 2 | Pisanie testów jednostkowych ze Spockiem |
Samouczek nr 3 | Sparametryzowane testy ze Spockiem |
Samouczek nr 4 | Spock Mocking and Stubbing |
Samouczek nr 5 | Test funkcjonalny Spock z selenem |
Samouczek nr 6 | Pytania do wywiadu Spocka |
Przegląd samouczków w serii Spock
Tutorial_Num | Czego się nauczysz |
---|---|
Samouczek nr 1 | Wprowadzenie do Spocka i Groovy'ego Ten samouczek wprowadzający wyjaśnia wszystko o Spocku, frameworku testowym zbudowanym na bazie Groovy. Wymusza BDD u podstaw i zapewnia, że wszystkie testy napisane przy użyciu frameworka są zgodne z konwencjami BDD. |
Samouczek nr 2 | Pisanie testów jednostkowych ze Spockiem W tym samouczku omówimy wszystkie szczegóły / kroki wymagane do rozpoczęcia testów jednostkowych w Spocku wraz z prostymi przykładami. |
Samouczek nr 3 | Sparametryzowane testy ze Spockiem Ten samouczek jasno wyjaśni, czym są testy parametryzowane i jak można wykorzystać wbudowane funkcje Spocka do testowania opartego na danych. |
Samouczek nr 4 | Spock Mocking and Stubbing Ten samouczek Spocka szczegółowo wyjaśni na temat Mockingu i Stubbingu, które są jednymi z najważniejszych elementów składowych obszernych testów jednostkowych. |
Samouczek nr 5 | Test funkcjonalny Spock z selenem Dowiedz się, jak używać Spocka do testowania integracji (jak usługi odpoczynku) oraz do testowania funkcjonalnego z tego samouczka informacyjnego. Na przykład integracja Spocka z Selenium. |
Samouczek nr 6 | Pytania do wywiadu Spocka Ten poradnik zawiera listę najpopularniejszych pytań do wywiadów Spocka wraz z odpowiedziami i przykładami. Te pytania rzeczywiście poprowadziłyby każdego do pomyślnego zakończenia wywiadu Spocka przy pierwszej próbie. |
Czego się nauczysz:
- Co to jest Spock?
- Obejrzyj samouczek wideo Spock and Groovy
- Co to jest Groovy?
- Pierwsze kroki ze Spockiem
- Anatomia specyfikacji Spocka
- Opisy bloków specyfikacji
- Ważne wskazówki
- Wniosek
- rekomendowane lektury
Co to jest Spock?
Spock to platforma testowa zbudowana na bazie Groovy. Wymusza BDD w rdzeniu i zapewnia, że wszystkie testy napisane przy użyciu frameworka są zgodne z konwencjami BDD.
Ponadto, w przeciwieństwie do JUnit, Spock ma własne podwójne biblioteki Mocking i testowe, a także pełne wsparcie dla sparametryzowanych scenariuszy testowych.
To dzięki temu kompletnemu pakietowi w sobie, specyfikacje Spocka są bardzo czytelne i wyraziste, w wyniku czego przeprowadzają testy, aby osiągnąć coraz więcej tego, co było zamierzone w celu zredukowania stereotypowego kodu.
Pomimo tych wszystkich fajnych funkcji, testy Spocka można uruchamiać przy użyciu istniejącego narzędzia do uruchamiania testów JUnit i istniejących narzędzi wiersza poleceń / budowania, takich jak Maven i Gradle, co czyni je jeszcze bardziej atrakcyjnymi w użyciu. Krótko mówiąc, Spock łączy w sobie wszystkie dobre cechy JUnit, BDD (frameworki takie jak JBehave i Ogórek ), a także kpiny.
W dalszych rozdziałach przyjrzymy się kilku przykładom ilustrującym każdą z tych funkcji.
Obejrzyj samouczek wideo Spock and Groovy
Co to jest Groovy?
Groovy to język skryptowy dla platformy Java.
Oto niektóre z głównych cech Groovy:
# 1) Może być używany jako typ dynamiczny (gdzie zmienna może przechowywać dane dowolnego typu), jak również typowany statycznie (co wymusza konstrukcje silnie typowane na zmiennych przechowujących dane).
Przykład : Przypisaliśmy tablicę i mapę w ten sam sposób, a wewnętrznie groovy określa typ i odpowiednio go obsługuje.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Wynik powyższego przykładowego kodu to:
klasa java.util.ArrayList
klasa java.util.LinkedHashMap
#dwa) Cały prawidłowy kod Java jest również prawidłowym kodem Groovy (ale nie na odwrót, ponieważ ma również dodatkowe funkcje).
# 3) Inne funkcje obejmują metaprogramowanie, zamknięcia, statyczne sprawdzanie typów itp.
# 4) w odróżnieniu Jawa średniki są opcjonalne w groovy, a typy pierwotne są domyślnie traktowane jako obiekty.
Ponieważ ta seria samouczków jest bardziej skoncentrowana na Spocku, nauczymy się tylko tych funkcji Groovy, które są niezbędne do tworzenia specyfikacji testowych opartych na Spocku.
Pierwsze kroki ze Spockiem
Aby rozpocząć, zobaczmy, jakie biblioteki są wymagane w zależności od używanego systemu kompilacji (np. Gradle / maven).
Dla projektów opartych na Maven
Projekty Maven będą musiały zawierać wtyczkę do kompilowania kodu Gradle, a także pewną wtyczkę, aby uruchomić specyfikacje oparte na groovy. Oprócz tego groovy & Spock, zależności należy również dodać.
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
Dla projektów opartych na Gradle
Dla przykładowego pliku gradle, jak poniżej, najważniejsze wymagania obejmują wtyczkę gradle i zależności dla groovy dla kodu i testu.
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 specyfikacji Spocka
Testy Spock można napisać dla dowolnego języka, który działa na JVM. Oznacza to, że nawet jeśli kod Twojej aplikacji jest w Javie, Scali lub Kotlin itp., Nadal możesz napisać testy jednostkowe / integracyjne w Spocku (zamiast innych, takich jak JUnit, JBehave itp.).
Klasy testowe Spocka nazywane są „Specyfikacjami” (podobnie jak Specyfikacje w świecie BDD) i możesz rozszerzyć klasę „Specification” frameworka Spock. (Specyfikacja jest podstawową klasą frameworka Spock).
Każdy plik Spec może zawierać wiele testów (podobnie jak plik klasy testowej JUnit), a każdy test może opcjonalnie zawierać bloki BDD, tj. Podane, kiedy i kiedy. Jest to podobne do innych frameworków BDD, w których każda z tych sekcji może być skorelowana odpowiednio z sekcjami Arrange, Act i Assert w testach JUnit.
Poniżej znajduje się schemat blokowy przedstawiający hierarchię specyfikacji i testów.
Zobaczmy, jak wygląda przykładowa specyfikacja w kodzie:
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 } }
Kilka ważnych punktów do zapamiętania:
# 1) Spójrz na nazwy scenariuszy testowych (ciąg po słowie kluczowym def): „sprawdź równość 2 ciągów bez uwzględniania wielkości liter”. Są to zwykłe angielskie ciągi znaków, co sprawia, że nazwy testów są dość czytelne i daje prawdziwy sens, aby sprawdzić, co osiąga.
Porównaj go ze zwykłym testem JUnit, w którym nazwa testu będzie wyglądać jak c.
caseEquality_withValidInput_shouldBeEqual()
#dwa) Biorąc pod uwagę, kiedy i potem bloki są równoważne z ustawieniem, działaniem i potwierdzeniem. Poza tym spójrz na wtedy (lub blok asercji), który implikuje twierdzenie o równości i unika wszelkiego standardowego kodu związanego z asercjami.
Przykład , Stwierdzenie w JUnit wyglądałoby tak, jak pokazano poniżej:
@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 widać z powyższego, testy Spocka sprawiają, że testy wyglądają mniej rozwlekle, a także unikają wszelkiego standardowego kodu w asercjach (i konfiguracji itp.)
Opisy bloków specyfikacji
Dla każdego z bloków w teście możesz wybrać opis bloku w postaci ciągu, aby podać więcej szczegółów na temat bloku, który jest wykonywany. Jest to pomocne w zapewnianiu bardziej szczegółowej struktury testu.
Zobaczmy przykład poniżej:
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 }
Ważne wskazówki
# 1) Wszystkie bloki w specyfikacji opartej na Spocku są opcjonalne. Jeśli jednak występuje, „kiedy” i „wtedy” powinny pojawiać się razem w kolejności.
#dwa) Jeśli potrzebujesz tylko zweryfikować potwierdzenie (a nie potrzebujesz kiedy blokować), możesz użyć „ oczekiwać ”Blok. Może być używany do potwierdzania warunków wstępnych nawet przed blokami, a następnie (i może być używany wielokrotnie w teście).
Zobaczmy przykładowe użycie oczekiwania, takie jak walidacja warunku wstępnego przed wykonaniem bloku „kiedy”.
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 pokazano powyżej, blok oczekiwania próbuje potwierdzić, że wartość klasy pól wejściowych, a także wartość jednego z danych wejściowych, mieści się w zakresie.
Wniosek
W tym samouczku Spock omówiliśmy podstawy języka programowania Groovy, wraz z anatomią lub podstawowymi elementami składowymi specyfikacji Spock.
Stworzyliśmy przykładowy projekt z wymaganymi zależnościami, aby napisać specyfikację Spocka opartą na groovy i napisaliśmy przykładową specyfikację.
W innych samouczkach z tej serii zagłębimy się głębiej w funkcje oferowane przez framework Spock i dowiemy się, w jaki sposób wykorzystują one groovy język do tworzenia czystych i czytelnych specyfikacji testowych.
porównaj dwa pliki wiersz po wierszu
Śledź nasze nadchodzące samouczki Spocka, aby dowiedzieć się więcej o testach, asercjach i raportowaniu w Spocku.
rekomendowane lektury
- Pisanie testów jednostkowych w Spock Framework
- Pytania do wywiadu Spocka z odpowiedziami (najpopularniejsze)
- Spock do integracji i testów funkcjonalnych z selenem
- Spock Mocking and Stubbing (przykłady z samouczkami wideo)
- Testowanie oparte na danych lub parametryzowane za pomocą Spock Framework
- Dogłębne samouczki dotyczące Eclipse dla początkujących
- Samouczek dotyczący refleksji w języku Java z przykładami
- Cucumber Selenium Tutorial: Cucumber Java Selenium Integracja WebDriver