spock tutorial testing with spock
Практична серія підручників Spock: Тестування за допомогою рамки Spock та мови програмування Groovy
Ця серія підручників повністю збагатить ваші знання про Spock Framework.
Прості та зрозумілі приклади були включені в кожен підручник для Вашого легкого розуміння концепції.
Будьте готові вчитися Spock безкоштовно !!
Список усіх підручників Spock у цій серії:
Дізнайтеся Spock докладно за допомогою цієї серії інтенсивних тренувань Spock для початківців та досвідчених професіоналів.
Підручник № | Посилання |
---|---|
Підручник No1 | Вступ до Спока та Грувого |
Підручник No2 | Написання одиничних тестів зі Споком |
Підручник No3 | Параметризоване тестування за допомогою Spock |
Підручник No4 | Спок знущання та заколювання |
Підручник No5 | Спок із селеновим функціональним тестом |
Підручник No6 | Запитання для інтерв’ю в Spock |
Огляд підручників у серії Spock
Підручник_Num | Що ви дізнаєтесь |
---|---|
Підручник No1 | Вступ до Спока та Грувого Цей вступний підручник пояснить усе про Spock, який є тестовою структурою, побудованою на вершині Groovy. Він застосовує BDD в основному і забезпечує, щоб усі тести, написані за допомогою фреймворку, відповідали умовам BDD. |
Підручник No2 | Написання одиничних тестів зі Споком У цьому посібнику ми розглянемо всі деталі / кроки, необхідні для початку роботи з модульним тестуванням у Spock, а також прості приклади. |
Підручник No3 | Параметризоване тестування за допомогою Spock Цей підручник чітко пояснить, що таке параметризовані тести та як ви можете використовувати вбудовані функції Spock для досягнення керованого даними тестування. |
Підручник No4 | Спок знущання та заколювання У цьому підручнику для Spock буде детально розказано про знущання та придушення, які є одним з найважливіших будівельних блоків великих модульних тестів. |
Підручник No5 | Спок із селеновим функціональним тестом Дізнайтеся, як використовувати Spock для інтеграційного тестування (наприклад, служби відпочинку) та для функціонального тестування з цього інформаційного посібника. Наприклад, інтеграція Spock із селеном. |
Підручник No6 | Запитання для інтерв’ю в Spock Цей підручник містить список найпопулярніших запитань для інтерв’ю у Spock із відповідями та прикладами. Ці питання справді допомогли б кожному успішно очистити інтерв'ю з першої спроби. |
Що ви дізнаєтесь:
- Що таке Спок?
- Перегляньте відеоурок Spock and Groovy
- Що таке Groovy?
- Початок роботи зі Споком
- Анатомія спока Специфікація
- Опис блоків специфікацій
- Важливі поради
- Висновок
- Рекомендована література
Що таке Спок?
Spock - це тестовий фреймворк, який побудований на вершині Groovy. Він застосовує BDD в основі і гарантує, що всі тести, написані за допомогою фреймворку, відповідають умовам BDD.
Крім того, на відміну від JUnit, Spock має власні бібліотеки для знущань та тестування, а також повну підтримку параметризованих сценаріїв тесту.
Завдяки цьому самому повному пакету, специфікації Spock надзвичайно читаються та виразні, і в результаті вони роблять тест, щоб досягти дедалі більше того, що було призначено для зменшення кліше-шаблонного коду.
Незважаючи на всі ці цікаві функції, тести Spock можна запустити за допомогою існуючого тестового модуля JUnit та існуючих інструментів командного рядка / збірки, таких як Maven та Gradle, що робить його ще більш привабливим для використання. У двох словах, Spock поєднує в собі всі хороші особливості JUnit, BDD (такі фреймворки, як JBehave & Огірок ), а також глузування.
У наступних розділах ми розглянемо кілька прикладів, що ілюструють кожну з цих особливостей.
Перегляньте відеоурок Spock and Groovy
Що таке Groovy?
Groovy - мова сценаріїв для платформи Java.
Серед основних особливостей канавки:
# 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.
Початок роботи зі Споком
Для початку давайте подивимося, які бібліотеки потрібні залежно від того, яку систему збірки ви використовуєте (наприклад, 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' }
Анатомія спока Специфікація
Спок-тести можуть бути написані для будь-якої мови, яка працює на 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 на основі groovy та написали зразок специфікації.
В інших підручниках цієї серії ми глибше заглибимось у функції, передбачені фреймворком Spock, і дізнаємося, як вони використовують грувістичну мову для створення чітких і читабельних специфікацій тесту.
як писати тестові кейси з вимог
Слідкуйте за нашими майбутніми підручниками Spock, щоб дізнатись більше про тестові прилади, твердження та звітування в Spock.
Рекомендована література
- Написання модульних тестів із Spock Framework
- Запитання для інтерв’ю з Spock (найпопулярніші)
- Spock для інтеграції та функціональних випробувань із селеном
- Спок знущання та придушення (приклади з відеоуроками)
- Тестування на основі даних або параметризоване за допомогою Spock Framework
- Поглиблені підручники Eclipse для початківців
- Підручник з роздумів про Java з прикладами
- Підручник з огірка селену: інтеграція огірка Java Selenium WebDriver