spock interview questions with answers
Изчистете Spock Interview успешно с този списък с Spock Interview Въпроси:
В това Spock уроци за всички , разгледахме всичко Интеграция и функционално тестване в Spock в предишния ни урок.
Този урок ще обхване най-често задаваните въпроси за интервюта около рамката на Spock.
Също така ще се опитаме да разберем методите на Spock за фиксиране и поддръжката на вградени разширения, които правят Spock наистина мощен инструмент за много видове тестове като Unit, Integration и от край до край.
какво да правя с .torrent файлове
Най-популярни въпроси за интервю за Spock
По-долу са изброени някои от най-често задаваните въпроси на Spock Interview с отговори и примери.
Нека да изследваме !!
В # 1) Може ли тестът на Spock да има множество кога и след това блокове?
Отговор: Обикновено се препоръчва да имате малки тестове или сценарии, тъй като опитите да направите много неща в един тест може да са миризма на код. Като каза това, напълно валидно е да има множество кога и след това блокове в тест. Тестът ще се счита за успешен само когато всички тогавашни блокове са в състояние на преминаване.
Нека да видим пример, който да илюстрира това:
def 'illustrate multiple when and then blocks'() { given: def input1 = 50 def input2 = 100 def result when: result = input1 + input2 then: result == 150 when: result = input2 - input1 then: result == 50 }
В горния кодов блок можете да видите, че имаме 2 блока, когато и след това.
Моля, обърнете внимание на точките по-долу:
- Блоковете се изпълняват в реда на появата им, т.е.последователно.
- Неизправността на никого след блокиране ще доведе до неуспех на теста.
- Твърденията във всички тогавашни блокове трябва да преминат, за да успее цялостният тест.
Въпрос # 2) Какви всички методи за приспособления са налични в Spock?
Отговор: Методите за фиксиране са като обратни извиквания, които се извикват, когато се задейства определено събитие.
Spock предостави 4 тестови тела, които се задействат срещу различни събития:
- setupSpec - Изпълнява се веднъж, преди да започне изпълнението на целия Spec файл.
- cleanupSpec - Изпълнява се веднъж, когато всички тестове в дадения Spec файл са изпълнени
- настройвам - Изпълнява се веднъж преди всеки тест в спецификацията.
- почисти - Работи веднъж след всеки тест в спецификацията.
Нека да видим пример за код, за да илюстрираме методите на фиксиране:
class TestFixtureSpec extends Specification { def setupSpec() { println 'in setup spec!' } def cleanupSpec() { println 'in cleanup spec!' } def setup() { println 'in setup!' } def cleanup() { println 'in cleanup!' } def 'test spec1'() { given: println '****test spec1****' } def 'test spec2'() { given: println '****test spec2****' }}
По-долу е изходът на горния пример на кода:
в спецификацията за настройка!
в настройка!
**** тест спецификации1 ****
в почистване!
в настройка!
**** тест spec2 ****
в почистване!
в спецификацията за почистване!
примери за клиентско сървърно приложение и уеб базирано приложение
Както е показано по-горе, можете да забележите, че спецификациите за настройка и почистване се извикват само веднъж за цялата спецификация и стъпките / устройствата за настройка и почистване се извикват веднъж на тест.
В # 3) Може ли Spock тестове да се използват за тестване на REST-базирани услуги?
Отговор: Да, Spock Framework може да се използва за създаване на E2E или тестове за интеграция за внедрени услуги за почивка, като се използват общи Java библиотеки като Rest template и др. (Също така, имайте предвид, че Spock може да се използва и за провеждане на тестове за приложения, базирани на Spring, както и с други рамки като Селен ).
Нека да видим това с прост пример, който използва клас RestTemplate на Spring и изпълнява операция за получаване на публично хостван API и проверява дали отговорът не е нулев.
Пример:
class RestApiIntegrationSpec extends Specification { def 'check rest api status'() { when: 'a rest call is performed to the status page' RestTemplate restTemplate = new RestTemplate() String response = restTemplate.getForObject('https://httpbin.org/get', String.class) then: response != null } }
В горния пример можете да се обърнете към спецификацията Spock, която се използва за утвърждаване на отговора на публичен API.
В # 4) Какви са ограниченията на рамката на Spock?
Отговор: Въпреки че кривата на обучение за рамката на Spock не е толкова стръмна, колкото е лесна за научаване, нейният декларативен синтаксис го прави много четлив.
Междувременно има няколко точки, които могат да бъдат разгледани:
- За приложения на кодова база Java, използването на Spock ще доведе до добавяне на нов езиков стек, т.е. Groovy.
- Spock тестовете се изпълняват малко по-бавно от местните JUnit тестове.
- Поддръжката на IDE за Spock не е толкова добра, колкото за други рамки като JUnit.
Въпреки всички горепосочени точки, все пак предимствата на рамката на Spock надвишават малкия списък от минуси, които Spock има.
В # 5) Обяснете някои от вградените разширения на рамката Spock.
Отговор: Spock предлага много вградени разширения / куки / тригери, които са предимно базирани на анотации (видяхме няколко от тях в раздела / въпроса за тестовите тела).
Нека да видим някои от вградената дискусия с примери:
@Игнорирай: За да се предотврати изпълнението на функция (или индивидуален метод). За да използвате просто метод за декориране (индивидуален метод за тестване) или цяла спецификация, това ще гарантира, че анотираният метод или клас няма да бъдат изпълнени.
@Ignore def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
@IgnoreRest: Тази анотация е полезна, когато просто искате да изберете един и да изпълните останалите методи от дадената спецификация.
@IgnoreRest def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 } 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 }
Както се вижда в горния пример, методът, коментиран с @IgnoreRest, ще бъде изпълнен, а останалите тестове ще бъдат игнорирани.
@IgnoreIf: Тази анотация е условно игнориране.
Например: Ако не искате да провеждате някои тестове на Mac OS, тогава можете да използвате комбинация от @IgnoreIf със System.getProperty (“os.name”), което ще гарантира, че тестовете ще се изпълняват само ако бъде намерена съответстващата операционна система .
Нека се опитаме да разберем това с примера по-долу на кода:
@IgnoreIf({ System.getProperty('os.name').contains('Mac') }) def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello world' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
В горната проба на кода използвахме анотация @IgnoreIf с условие на System.getProperty, което ще провери за „Mac“ в стойността на свойството и ще игнорира само ако съвпадението на условието е успешно.
Нека видим още едно разширение тук, т.е. @Timeout: Това помага да се спомене стойността на времето за изчакване в избраната от вас единица за теста в изпълнение и ако прагът на изчакване е нарушен, тестът ще изведе изключение.
Друг важен момент, който трябва да отбележим тук, е, че анотацията @Timeout може да бъде спомената и в пълната спецификация и това ще комбинира продължителността на всички отделни тестове и ще направи изключение в случай на нарушаване на прага.
@Timeout(value=10, unit= TimeUnit.MILLISECONDS) class SampleSpec extends Specification { def 'check case-insensitive equality of 2 strings'() { //test1 } def 'check addition of 2 numbers'() { //test2 } }
В горния код, ако общото време за изпълнение на спецификацията надвиши 10 ms, тогава изпълнението на сценария ще се провали. Можете да видите изхода с подробности за грешки в конзолата за грешки.
как да използвам .jar файл
Подобно на гореспоменатите разширения, има няколко други вградени разширения, като например:
@Изисква: Което изисква конкретно условие, за да е истина.
@Проблем: За свързване на всички дефекти, свързани с тестовия случай и т.н.
Тези разширения добавят много гъвкавост и мощност към спецификациите на Spock и дават много контрол за изпълнението на теста.
Заключение
По този начин ние разгледахме най-популярните въпроси за интервю за Spock тук в този урок. Кривата на обучение за Spock е ниска поради факта, че езикът groovy следва декларативен стил на програмиране и е лесно четим.
Въпреки че е сравнително нов, Spock набира популярност като рамка за избор за писане на различни видове тестове в Java или Groovy-базирани приложения.
Надявам се, че сте се насладили на всички информативни уроци в тази серия Spock. Наистина сме сигурни, че тези уроци биха обогатили вашите познания и разбиране за Spock.
Препоръчително четене
- Писане на единични тестове със Spock Framework
- Spock за интеграция и функционални тестове със селен
- Спок подигравки и сбиване (Примери с видео уроци)
- Управлявано от данни или параметризирано тестване със Spock Framework
- Урок за Spock: Тестване със Spock и Groovy
- Въпроси и отговори за интервюта
- Въпроси и отговори за интервю за ETL тестване
- 20 Най-популярни въпроси и отговори за интервю за TestNG