spock tutorial testing with spock
Практични Споцк водичи: Тестирање са Споцк оквиром и Гроови програмским језиком
Ова серија водича у потпуности ће обогатити ваше знање о Споцк Фрамеворк-у.
Једноставни и јасни примери су укључени у сваки водич за ваше лако разумевање концепта.
Припремите се за бесплатно учење Споцка !!
Листа свих Споцк лекција у овој серији:
Детаљно научите Споцка уз помоћ ове серије Интензивних тренинга за споке за почетнике и искусне професионалце.
Приручник # | Линк |
---|---|
Туториал # 1 | Увод у Споцка и Гроовија |
Туториал # 2 | Писање јединствених тестова са Споцком |
Туториал # 3 | Параметарско тестирање са Споцк-ом |
Туториал # 4 | Споцк ругање и стубирање |
Водич бр. 5 | Спок са тестом функционалности селена |
Лекција # 6 | Споцк Интервју питања |
Преглед лекција у Споцк серији
Туториал_Нум | Шта ћете научити |
---|---|
Туториал # 1 | Увод у Споцка и Гроовија Овај уводни водич ће вам објаснити све о Споцк-у, који је тест оквир који је изграђен на врху Гроови-а. Примењује БДД у основи и осигурава да сви тестови написани помоћу оквира прате БДД конвенције. |
Туториал # 2 | Писање јединствених тестова са Споцком У овом упутству ћемо проћи кроз све детаље / кораке који су потребни да бисмо започели јединствено тестирање у Споцку, заједно са једноставним примерима. |
Туториал # 3 | Параметарско тестирање са Споцк-ом Овај водич ће вам јасно објаснити шта су параметризовани тестови и како можете да искористите уграђене функције Споцка да бисте постигли тестирање на основу података. |
Туториал # 4 | Споцк ругање и стубирање Овај Споцков водич детаљно ће вам објаснити ругање и превртање који су један од најважнијих градивних елемената опсежних тестова јединице. |
Водич бр. 5 | Спок са тестом функционалности селена Научите како да користите Споцк за интеграционо тестирање (попут услуга одмора) и за функционално тестирање из овог информативног водича. На пример, интегрисање спока са селеном. |
Лекција # 6 | Споцк Интервју питања Овај водич укључује листу најпопуларнијих питања за интервјуе са Споцк-ом са одговорима и примерима. Ова питања заиста би водила било кога да успешно очисти споцк интервју из првог покушаја. |
Шта ћете научити:
- Шта је Споцк?
- Погледајте видео водич за Споцк анд Гроови
- Шта је Гроови?
- Први кораци са Споцком
- Анатомија спокове спецификације
- Опис блока спец
- Важни савети
- Закључак
- Препоручено читање
Шта је Споцк?
Споцк је тест оквир који је изграђен на врху Гроови-а. Она примењује БДД у основи и осигурава да ли сви тестови написани помоћу оквира следе БДД конвенције.
Такође, за разлику од ЈУнит-а, Споцк има сопствене Моцкинг и тест двоструке библиотеке, као и потпуну подршку за параметризоване сценарије теста.
Захваљујући овом комплетном пакету, Споцкове спецификације су супер читљиве и изражајне и као резултат тога чине тест како би постигли све више и више онога што је намењено смањењу клишеизираног кода.
Упркос свим овим сјајним карактеристикама, Споцк тестови се могу покретати помоћу постојећег покретачког програма за тестирање ЈУнит и постојећих алата за командну линију / изградњу као што су Мавен и Градле, што га чини још примамљивијим за употребу. Укратко, Споцк комбинује све добре особине ЈУнит-а, БДД (оквири попут ЈБехаве & Краставац ) као и ругање.
У следећим одељцима ћемо погледати неколико примера који илуструју сваку од ових карактеристика.
Погледајте видео водич за Споцк анд Гроови
Шта је Гроови?
Гроови је скриптни језик за Јава платформу.
Неке од главних карактеристика гроови-а укључују:
# 1) Може се користити као динамички куцани (где променљива може садржати било коју врсту података), као и статички куцани (који намеће снажно откуцане конструкције на променљивим у којима се чувају подаци).
Пример : Низ и мапу смо доделили на исти начин и унутрашњи гроови одређује врсту и на одговарајући начин рукује с њом.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Резултат горњег узорка кода је:
класа јава.утил.АрраиЛист
класа јава.утил.ЛинкедХасхМап
#два) Сав важећи Јава код је такође важећи Гроови код (али не и обрнуто, јер има и додатне функције).
# 3) Остале функције укључују метапрограмирање, затварања, проверу статичког типа итд.
# 4) за разлику од Јава тачка и зарез нису опционални у гроови, а примитивни типови се подразумевано сматрају објектима.
Како је ова серија водича више усредсређена на Споцк, тек ћемо научити оне Гроови функције које су од суштинског значаја за израду спецификација теста заснованих на Споцку.
Први кораци са Споцком
Да бисмо започели, погледајмо које су библиотеке потребне у зависности од тога који систем градње користите (нпр. Градле / мавен).
За пројекте засноване на Мавену
Мавен пројекти ће морати да садрже додатак за компајлирање Градле кода, као и сигурни додатак да би покренули гроови спецификације. Поред овог гроови & Споцка, зависности такође треба додати.
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
За пројекте засноване на Градле-у
За узорак градле датотеке као што је приказано испод, најважнији захтеви укључују градле додатак и зависности за гроови за код и тест.
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' }
Анатомија спокове спецификације
Споцк тестови се могу написати за било који језик који ради на ЈВМ-у. То значи да, чак и ако је код ваше апликације на Јави или Сцали или Котлину итд., И даље можете одабрати да напишете своје јединице / тестове интеграције у Споцк-у (у односу на друге попут ЈУнит, ЈБехаве итд.).
Класе Споцк теста називају се „Спецификације“ (слично спецификацијама у БДД свету) и можете проширити класу „Спецификација“ оквира Споцк. (Спецификација је основна класа Споцк оквира).
Свака датотека са спецификацијама може садржати више тестова (слично датотеци класе теста ЈУнит), а сваки тест по жељи може садржати БДД блокове, тј. Дато је, када и тада. Ово је слично осталим БДД оквирима, где сваки од ових одељака може бити повезан са одељцима Распоређивање, Деловање и Утврђивање у тестовима ЈУнит.
Испод је блок дијаграм који приказује хијерархију Спец и тестова.
Погледајмо како изгледа спецификација узорка у коду:
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) Погледајте назив сценарија теста (низ након кључне речи деф): „проверите једнакост 2 низа без великих и малих слова“. То су обичне енглеске жице и то чини називе теста прилично читљивим и даје стварни смисао да се тестира шта се постиже.
Упоредите га са уобичајеним тестом ЈУнит, где ће назив теста изгледати отприлике ц.
caseEquality_withValidInput_shouldBeEqual()
#два) С обзиром да су блокови када и тада еквивалентни распореду, деловању и потврђивању. Из ових погледа на тадашњи (или потврдити блок) који подразумева тврдњу о једнакости и избегава сав шифрирани образац повезан са тврдњама.
Пример , Тврдња у ЈУнит-у изгледала би као што је приказано доле:
@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); }
Као што можете да видите из горенаведеног, Споцкови тестови чине да тестови изгледају мање опширни, као и да избегавају сав стандардни образац у тврдњама (и подешавању итд.)
Опис блока спец
За сваки од појединачних блокова у тесту можете одабрати да наведете опис блока као низ како бисте пружили више детаља о блоку који се извршава. Ово је корисно за пружање детаљније структуре тесту.
Да видимо пример у наставку:
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) Сви блокови у спецификацији заснованој на Споцку нису обавезни. Међутим, ако постоје „када“ и „тада“, треба да се појављују заједно у низу.
#два) Ако само требате да потврдите тврдњу (а немате потребу за блокадом), можете да користите „ очекујте ' блокирати. Може се користити за утврђивање предуслова чак и пре него када и тада блокира (и може се користити више пута у тесту).
Погледајмо пример примене очекивања попут валидације предуслова пре извршавања блока „када“.
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 }
Као што је горе приказано, блок очекивања покушава да утврди вредност класе поља за унос, као и вредност једног од улаза који се налази унутар опсега.
Закључак
У овом водичу за Споцк покрили смо основе програмског језика Гроови, заједно са анатомијом или основним градивним елементима Споцк спецификације.
Направили смо пример узорка са потребним зависностима како бисмо написали споковне спецификације засноване на гроови-у и написали спецификацију узорка.
У осталим туторијалима из ове серије, дубље ћемо се упознати са карактеристикама које пружа Споцк фрамеворк и упознати како они користе гроови језик за стварање чистих и читљивих спецификација теста.
како писати тест случајеве из захтева
Пратите наше предстојеће водиче за Споцк да бисте сазнали више о испитним уређајима, тврдњама и извештавању у Споцку.
Препоручено читање
- Писање јединствених тестова са Споцк Фрамеворк-ом
- Споцк интервју питања са одговорима (најпопуларније)
- Споцк за интеграцију и функционална испитивања са селеном
- Споцк ругање и стубирање (примери са видео водичима)
- Тестирање на основу података или параметризовано са Споцк Фрамеворк-ом
- Дубински водичи за помрачење за почетнике
- Водич за Јава рефлексију са примерима
- Водич за краставац селениј: Интеграција Јава Селениум ВебДривер краставца