spock integration
Споцк за интеграционо тестирање (попут услуга одмора) и за функционално тестирање (са селеном):
Истражили смо око Ругање, стубирање и шпијунирање у Споцку у нашем претходном водичу.
У ово Цела серија лекција за обуку на Споцк-у , до сада смо покривали писање јединствених тестова користећи Споцк фрамеворк. Јединствени тестови, обично тестирају једну класу са свим тачкама интеграције или се спољни позиви замењују лажним позивима или квара.
За разлику, интеграциони тестови тестирају тачке интеграције између 2 дела. На пример, тестирање уговора између 2 услуге, тестирање интеграције између услуге и базе података итд.
У овом упутству научићемо како се користи Споцк за Интеграционо тестирање (попут услуга одмора) и за функционално испитивање . На пример , Интегрисање Споцка са селеном итд.
Ево видео упутства:
Шта ћете научити:
Спринг Споцк интеграција
Покушајмо ово да разумемо на примеру како можемо интегрисати Споцк са апликацијама заснованим на Спринг боот МВЦ.
која је најбоља страница за преузимање мп3 бесплатно
Иако Спринг има богат скуп напомена и добро се интегрише са ЈУнит-ом, Споцк додаје или помаже да се дода приступ тестирања у БДД стилу који се лако чита, што чини спецификације теста врло читљивим.
О апликацији
Користићемо градле апликацију за покретање са пролећним покретањем, са контролером на бази одмора који имплементира крајњу тачку.
Потребне зависности
Поред зависности од пролећног покретања, додаћемо и уобичајену груови зависност компајлирања као и зависност језгра Споцк. Друга зависност заснована на Споцк-у је Споцк-спринг , који омогућава Споцк спецификацијама да користе напомене засноване на Спрингу.
Доље је наведена листа потребних зависности:
- имплементација „орг.спрингфрамеворк.боот: спринг-боот-стартер“
- тестИмплементатион ‘орг.спрингфрамеворк.боот: спринг-боот-стартер-тест’
- компајлирајте “орг.цодехаус.гроови: гроови-алл: 2.4.8”
- тестЦомпиле “орг.споцкфрамеворк: споцк-цоре: 1.2-гроови-2.4”
- тестЦомпиле група: „орг.споцкфрамеворк“, назив: „споцк-спринг“, верзија: „1.2-гроови-2.4“
Почетак
Почнимо са стварним тестом.
У првом тесту проверићемо да ли се беан креира за класу контролера коју смо додали. Због тога би апликација требало да започне када се тест покрене.
Да бисмо то постигли, додаћемо @ СпрингБоотТест напомена која обезбеђује покретање контекста апликације пре него што се тест изврши.
Испод је тест код:
@SpringBootTest class SampleSpringSpec extends Specification { @Autowired private WebController webController def 'when context is loaded then controller bean is created'() { expect: 'the WebController is created' webController != null } }
У горњем коду можете видети да смо користили @СпрингБоотТест напомена која осигурава покретање АпплицатионЦонтект-а, пре него што се тест изврши, а такође смо аутоматски повезали беан ВебЦонтроллер према пролећним напоменама.
Тест потврђује да се компонента Вебцонтроллер инстанцира као део контекста апликације.
Погледајмо још један тест, где ћемо Веб контролором погодити изложену крајњу тачку и потврдити код одговора, као и текст одговора кроз пробне класе пролећних оквира, тј. МоцкМвц и МоцкМвцРекуестБуилдерс.
Погледајте доњи тест код:
@AutoConfigureMockMvc(secure=false) @WebMvcTest() class SampleMvcSpec extends Specification{ @Autowired private MockMvc mvc def 'assert response and status code for /greeting'() { expect: 'status code as 200 and response string as Hello world!' mvc.perform(MockMvcRequestBuilders.get('/hello')) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn().response.contentAsString == 'Hello world!' } }
Споцк интеграција селена
Ево видео упутства:
Сада да видимо пример како можемо да интегришемо тестове засноване на селену користећи Споцк. Они не захтевају другу специфичну зависност, али генерално, можете да користите постојеће начине за ефикаснију организацију тестова селена користећи БДД.
У ово Пример, видећемо једноставан тест селена путем ЦхромеВебДривер-а који покушава да потражи кључну реч на гоогле претрази и верификује наслов странице резултата претраживања.
class SeleniumSpec extends Specification { private static def WebDriver driver = new ChromeDriver() def 'cleanupSpec'() { if(driver != null) { driver.close() } } def 'selenium integration with spock'() { given: driver.navigate().to('https://www.google.co.in') WebElement searchBox = driver.findElement(By.cssSelector('input(name=q)')); WebElement submitSearchButton = driver.findElement(By.cssSelector('input(name=btnK)')); when: searchBox.sendKeys('India') Thread.sleep(5000) submitSearchButton.click() def title = driver.getTitle() then: title.toLowerCase()contains('india') } }
Приметите како смо прогласили инстанцу вебдривер за ЦхромеДривер и користили се у оквиру спецификације.
Такође, у датом кораку смо прогласили / дефинисали све веб елементе који су нам потребни за извршавање теста.
Споцк оквир се такође може интегрисати и користити са постојећим оквиром за аутоматизацију, а тестове засноване на Јави / ЈУнит-у можемо заменити Споцком како бисмо искористили снагу декларативног програмирања у Гроови-у.
Закључак
У овом упутству истражили смо различите начине интеграције тестова заснованих на Споцк-у са другим оквирима и врстама тестова, као што су интеграциони тестови и Енд-2-Енд тестови.
Видели смо примере Споцкове интеграције са Спринг фрамеворк-ом и интеграционих тестова заснованих на селену. Слично овим, Споцк се такође може користити за писање тестова са клијентима Рест за интеграционо тестирање АПИ-ја заснованих на РЕСТ-у.
Брзо се припремите за Споцк интервју са вашим предстојећим упутством, које покрива листу најважнијих питања за Споцк Интервиев !!
ПРЕВ Туториал |. | СЛЕДЕЋА Лекција
Препоручено читање
- Писање јединствених тестова са Споцк Фрамеворк-ом
- Споцк интервју питања са одговорима (најпопуларније)
- Споцк ругање и стубирање (примери са видео водичима)
- Тестирање на основу података или параметризовано са Споцк Фрамеворк-ом
- Водич за Споцк: Тестирање са Споцком и Гроовием
- Интеграција селена са ЈМетером
- Разлике између јединственог тестирања, интеграционог тестирања и функционалног тестирања
- Функционално тестирање вс нефункционално тестирање