spock tutorial testing with spock
Практически поредици от Spock: Тестване с Spock framework и Groovy Programming Language
Тази поредица от уроци ще обогати напълно вашите знания за Spock Framework.
Във всеки урок са включени прости и ясни примери за лесното ви разбиране на концепцията.
Пригответе се да научите Spock безплатно !!
Списък на всички уроци по Spock в тази поредица:
Научете Spock в детайли с помощта на тази интензивна серия Spock Training за начинаещи и опитни професионалисти.
Урок # | Връзка |
---|---|
Урок №1 | Въведение в Spock и Groovy |
Урок №2 | Писане на единични тестове със Spock |
Урок №3 | Параметризирано тестване със Spock |
Урок # 4 | Спок подигравки и стърчащи |
Урок №5 | Spock с функционален тест за селен |
Урок # 6 | Въпроси за интервю в Spock |
Преглед на уроци в Spock Series
Tutorial_Num | Какво ще научите |
---|---|
Урок №1 | Въведение в Spock и Groovy Този уводен урок ще обясни всичко за Spock, който е тестова рамка, изградена върху Groovy. Той налага BDD в основата и гарантира, че всички тестове, написани с помощта на рамката, следват конвенциите BDD. |
Урок №2 | Писане на единични тестове със Spock В този урок ще разгледаме всички подробности / стъпки, необходими за започване на тестване на модули в Spock, заедно с прости примери. |
Урок №3 | Параметризирано тестване със Spock Този урок ясно ще обясни какво представляват параметризираните тестове и как можете да използвате вградените функции на Spock, за да постигнете тестване, управлявано от данни. |
Урок # 4 | Спок подигравки и стърчащи Този урок на Spock ще обясни в детайли за подигравките и сблъсъците, които са един от най-важните градивни елементи на обширните тестове на модулите. |
Урок №5 | Spock с функционален тест за селен Научете как да използвате Spock за тестване на интеграция (като услуги за почивка) и за функционално тестване от този информативен урок. Например, интегриране на Spock със селен. |
Урок # 6 | Въпроси за интервю в Spock Този урок включва списък с най-популярните въпроси за интервю за Spock с отговори и примери. Тези въпроси наистина биха насочили всеки да изчисти спок интервюто успешно при първия опит. |
Какво ще научите:
- Какво е Spock?
- Гледайте видео урок Spock and Groovy
- Какво е Groovy?
- Първи стъпки със Spock
- Анатомия на Spock Спецификация
- Описания на спецификациите
- Важни съвети
- Заключение
- Препоръчително четене
Какво е Spock?
Spock е тестова рамка, изградена върху Groovy. Той налага BDD в основата и гарантира дали всички тестове, написани с помощта на рамката, следват конвенциите BDD.
Също така, за разлика от JUnit, Spock има свои собствени библиотеки за подигравки и тестове, както и пълна поддръжка за параметризирани тестови сценарии.
Благодарение на този пълен пакет самостоятелно, спецификациите на Spock са супер четливи и изразителни и в резултат на което тестват теста, за да постигнат все повече и повече от това, което е предназначено за намаляване на клиширания шаблон.
Въпреки всички тези страхотни функции, Spock тестовете могат да се изпълняват с помощта на съществуващия JUnit тест бегач и съществуващите инструменти за команден ред / изграждане като Maven и Gradle, което го прави още по-привлекателен за използване. Накратко, Spock съчетава всички добри характеристики на JUnit, BDD (рамки като JBehave & Краставица ), както и подигравка.
Ще разгледаме няколко примера, илюстриращи всяка от тези характеристики в следващите раздели.
Гледайте видео урок Spock and Groovy
Какво е Groovy?
Groovy е скриптов език за Java платформа.
Някои от основните характеристики на groovy включват:
# 1) Той може да се използва като динамично въведен (където променлива може да съдържа всякакъв вид данни), както и статично напечатан (който налага силно типизирани конструкции върху променливи, съдържащи данни).
Пример : Присвоили сме масив и карта по един и същи начин и вътрешно groovy определя вида и го обработва по подходящ начин.
def listType = [1,2,3] def mapType = ['red':2,'green':3] println(listType.getClass()) println(mapType.getClass())
Резултатът от горната проба на кода е:
клас java.util.ArrayList
клас java.util.LinkedHashMap
# две) Всички валидни Java кодове също са валидни Groovy кодове (но не и обратното, тъй като имат и допълнителни функции).
# 3) Други функции включват мета-програмиране, затваряне, проверка на статичен тип и т.н.
# 4) За разлика от Java точка и запетая не са задължителни в groovy и примитивните типове се разглеждат като обекти по подразбиране.
Тъй като тази поредица от уроци е по-фокусирана върху Spock, ние просто ще научим онези функции на Groovy, които са от съществено значение за създаването на спецификациите, базирани на Spock.
Първи стъпки със Spock
За да започнем, нека видим какви библиотеки са необходими в зависимост от това каква система за изграждане използвате (напр. Gradle / maven).
За проекти, базирани на Maven
Проектите на Maven ще трябва да включват плъгин за компилиране на Gradle код, както и сигурен плъгин, за да стартират groovy базирани спецификации. В допълнение към този грув & Spock, зависимости също трябва да се добави.
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
За проекти, базирани на Gradle
За примерен файл gradle, както е показано по-долу, най-важните изисквания включват приставката gradle и зависимостите за groovy за код и тест.
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' }
Анатомия на Spock Спецификация
Spock тестове могат да бъдат написани за всеки език, който работи на JVM. Това означава, че дори ако кодът на приложението ви е в Java или Scala или Kotlin и т.н., пак можете да изберете да напишете тестовете си за единица / интеграция в Spock (над други като JUnit, JBehave и др.).
Класовете на Spock тест се наричат „Спецификации“ (Подобно на спецификациите в света на BDD) и можете да разширите класа „Спецификация“ на рамката Spock. (Спецификацията е основният клас на рамката на Spock).
Всеки Spec файл може да съдържа множество тестове (подобно на файл с JUnit тест клас) и всеки тест може по избор да съдържа BDD блоковете, т.е. даден, когато и тогава. Това е подобно на други BDD рамки, където всеки от тези раздели може да бъде свързан съответно с раздели Подреждане, Действие и Утвърждаване в тестовете JUnit.
По-долу е дадена блок-схема, изобразяваща йерархията на Spec и тестове.
Нека да видим как изглежда примерна спецификация в кода:
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 } }
Тук трябва да се отбележат няколко важни точки:
# 1) Погледнете името на тестовите сценарии (низът след ключовата дума def): „проверете равенството на 2 низа без значение на регистъра“. Това са обикновени английски низове и това прави имената на тестовете доста четливи и дава истински смисъл да се тества какво постига.
Сравнете го с обичайния тест JUnit, където името на теста ще изглежда като нещо като c.
caseEquality_withValidInput_shouldBeEqual()
# две) Като се има предвид, кога и тогава блоковете са еквивалентни на Arrange, Act и Assert. От тях погледнете тогавашния (или утвърждаващия блок), който предполага твърдение за равенство и избягва всички кодови образци, свързани с твърдения.
Пример , Твърдението в JUnit би изглеждало, както е показано по-долу:
@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); }
Както можете да видите от горното, тестовете на Spock правят тестовете да изглеждат по-малко многословни, както и да избягват всички образци в твърдения (и настройка и т.н.)
Описания на спецификациите
За всеки от отделните блокове в тест можете да изберете да предоставите описание на блока като низ, за да предоставите повече подробности за блока, който се изпълнява. Това е полезно за осигуряване на по-подробна структура на теста.
Нека да видим пример по-долу:
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 }
Важни съвети
# 1) Всички блокове в спецификацията, базирана на Spock, не са задължителни. Ако обаче присъстват „кога“ и „тогава“, трябва да се появяват заедно в последователност.
# две) Ако просто трябва да потвърдите твърдение (и нямате нужда от кога да блокирате), можете да използвате „ очаквам ”Блок. Той може да се използва за утвърждаване на предварителни условия, дори преди и след това блокове (и може да се използва няколко пъти в тест).
Нека да видим примерна употреба на очаквайте като валидиране на предварителното условие преди изпълнение на блока „кога“.
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 }
Както е показано по-горе, блокът с очаквания се опитва да утвърди стойността на класа на полетата за въвеждане, както и стойността на един от входовете да се намира в диапазона.
Заключение
В този урок за Spock сме разгледали основите на езика за програмиране Groovy, заедно с анатомията или основните градивни елементи на спецификацията Spock.
Създадохме примерен проект с необходимите зависимости, за да напишем грукови базирани спецификации на Spock и написахме примерна спецификация.
В другите уроци от тази поредица ще разгледаме по-задълбочено функциите, предоставени от рамката на Spock, и ще се запознаем с това как те използват езика на groovy, за да създадат чисти и четливи спецификации на теста.
когато трябва да се извърши регресионно тестване
Следете нашите предстоящи уроци за Spock, за да научите повече за тестовите тела, твърдения и отчитане в Spock.
Препоръчително четене
- Писане на единични тестове със Spock Framework
- Спок интервю въпроси с отговори (най-популярни)
- Spock за интеграция и функционални тестове със селен
- Спок подигравки и сбиване (Примери с видео уроци)
- Управлявано от данни или параметризирано тестване със Spock Framework
- Уроци за задълбочено затъмнение за начинаещи
- Урок за отражение на Java с примери
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver