spock interview questions with answers
Ștergeți-vă cu succes interviul Spock cu această listă de întrebări despre interviu Spock:
In acest Tutoriale Spock pentru toți , am explorat totul Integrare și testare funcțională în Spock în tutorialul nostru anterior.
Acest tutorial va acoperi cele mai frecvente întrebări de interviu din cadrul Spock.
Vom încerca, de asemenea, să înțelegem metodele de fixare Spock și suportul de extensii încorporate care fac din Spock un instrument cu adevărat puternic pentru o mulțime de tipuri de testare, cum ar fi Unit, Integrare și cap la cap.
ce este un fișier .jnlp
Cele mai populare întrebări de interviu Spock
Mai jos sunt enumerate unele dintre cele mai frecvente întrebări de interviu Spock, cu răspunsuri și exemple.
Să explorăm !!
Q # 1) Poate un test Spock să aibă multiple când și apoi blocuri?
Răspuns: În general, se recomandă să aveți teste sau scenarii mici, deoarece încercarea de a face multe lucruri într-un singur test ar putea fi un miros de cod. Acestea fiind spuse, este perfect valabil să aveți mai mulți când și apoi blocați un test. Testul va fi considerat a avea succes numai atunci când toate blocurile de atunci sunt în stare de trecere.
Să vedem un exemplu pentru a ilustra acest lucru:
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 }
În blocul de cod de mai sus, puteți vedea că avem 2 blocuri când și apoi.
Vă rugăm să rețineți punctele de mai jos:
- Blocurile sunt executate în ordinea apariției lor, adică secvențial.
- Eșecul oricui blocat va duce la eșecul testului.
- Afirmațiile din toate blocurile de atunci ar trebui să treacă pentru ca testul general să aibă succes.
Q # 2) Care sunt toate metodele de fixare disponibile în Spock?
Răspuns: Metodele de fixare sunt ca apelurile de apel care sunt apelate atunci când este declanșat un anumit hook de eveniment.
Spock a furnizat 4 dispozitive de test care sunt declanșate împotriva diferitelor evenimente:
- setupSpec - Se execută o dată înainte de a începe executarea întregului fișier Spec.
- cleanupSpec - Se execută o dată când toate testele din fișierul Spec dat sunt executate
- înființat - Se execută o dată înainte de fiecare test din specificație.
- curăță - Se execută o dată după fiecare test din specificație.
Să vedem un eșantion de cod pentru a ilustra metodele de fixare:
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****' }}
Mai jos este rezultatul exemplului de cod de mai sus:
în specificațiile de configurare!
în configurare!
**** specificație de testare ****
în curățenie!
în configurare!
**** spec2 de testare ****
în curățenie!
în specificațiile de curățare!
După cum se arată mai sus, puteți observa că specificațiile de configurare și curățare sunt numite o singură dată pentru întreaga specificație, iar pașii / dispozitivele de configurare și curățare sunt numite o dată pe test.
Î # 3) Pot fi utilizate testele Spock pentru testarea serviciilor bazate pe REST?
convertor de studio gratuit youtube to mp3
Răspuns: Da, framework-ul Spock poate fi utilizat pentru crearea de teste E2E sau de integrare pentru serviciile de odihnă implementate folosind biblioteci Java obișnuite, cum ar fi șablonul Rest, etc. cu alte cadre precum Seleniu ).
Să vedem acest lucru cu un exemplu simplu care utilizează clasa RestTemplate a Spring și efectuează o operațiune get pe un API găzduit public și verifică răspunsul ca fiind nul.
Exemplu:
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 } }
În exemplul de mai sus, puteți consulta specificațiile Spock care sunt utilizate pentru afirmarea răspunsului unui API public.
Q # 4) Care sunt limitările cadrului Spock?
Răspuns: Deși curba de învățare pentru cadrul Spock nu este la fel de abruptă pe cât de ușor de învățat, sintaxa sa declarativă o face foarte ușor de citit.
Între timp, există câteva puncte care ar putea fi luate în considerare:
- Pentru aplicațiile pe baza de cod Java, utilizarea Spock va duce la adăugarea unei stive de limbă nouă, adică Groovy.
- Testele Spock rulează puțin mai lent decât testele native JUnit.
- Suportul IDE pentru Spock nu este la fel de bun ca pentru alte cadre precum JUnit.
În ciuda tuturor punctelor de mai sus, totuși, avantajele cadrului Spock depășesc mica listă de contravenții pe care Spock le are.
Q # 5) Explicați câteva dintre extensiile încorporate ale cadrului Spock.
Răspuns: Spock oferă o mulțime de extensii / cârlige / declanșatoare încorporate, care sunt în mare parte bazate pe adnotări (am văzut câteva dintre ele în secțiunea / întrebarea cu privire la dispozitivele de testare).
Să vedem câteva dintre discuțiile încorporate cu exemple:
@Ignora: Pentru a preveni executarea unei caracteristici (sau a unei metode individuale). Pentru a utiliza pur și simplu metoda de decorare (metodă de testare individuală) sau o întreagă specificație, acest lucru va asigura că metoda sau clasa adnotată nu se execută.
@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: Această adnotare este utilă atunci când doriți doar să selectați una și să executați restul metodelor din Specificația dată.
@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 }
După cum se vede în exemplul de mai sus, metoda adnotată cu @IgnoreRest va fi executată și restul testelor vor fi ignorate.
@IgnoreIf: Această adnotare este o ignorare condiționată.
De exemplu: Dacă nu doriți să rulați unele teste pe Mac OS, atunci puteți utiliza o combinație de @IgnoreIf cu System.getProperty („os.name”) care vă va asigura că testele vor fi rulate numai dacă se găsește sistemul de operare corespunzător. .
Să încercăm să înțelegem acest lucru cu exemplul de cod de mai jos:
@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 }
În exemplul de cod de mai sus, am folosit adnotarea @IgnoreIf cu o condiție pe System.getProperty, care va verifica „Mac” în valoarea proprietății și o va ignora numai dacă potrivirea condiției este reușită.
Să vedem încă o extensie aici, adică @Pauză: Acest lucru vă ajută să menționați o valoare de expirare în unitatea aleasă de dvs. pentru testul în curs de execuție și, dacă pragul de expirare este încălcat, testul va arunca o excepție.
Un alt punct important de remarcat aici este că adnotarea @Timeout poate fi menționată și peste specificația completă și aceasta va combina durata tuturor testelor individuale și va arunca o excepție în cazul încălcării pragului.
@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 } }
În codul de mai sus, dacă timpul total de execuție al specificațiilor depășește 10 ms, atunci execuția scenariului va eșua. Puteți vedea rezultatul cu detalii de eroare în consola de erori.
Similar cu extensiile menționate mai sus, există câteva alte extensii încorporate, precum:
cum se găsește masca de subrețea implicită
@Necesită: Ceea ce necesită o condiție specifică pentru a fi adevărată.
@Problema: Pentru a lega orice defecte asociate cazului de testare etc.
Aceste extensii adaugă multă flexibilitate și putere specificațiilor Spock și oferă mult control pentru executarea testului.
Concluzie
Astfel, am prezentat cele mai populare Întrebări despre interviu Spock aici în acest tutorial. Curba de învățare pentru Spock este redusă datorită faptului că limbajul groovy urmează un stil de programare declarativ și este foarte lizibil.
Deși relativ nou, Spock câștigă popularitate ca cadru de alegere pentru scrierea diferitelor tipuri de teste în Java sau aplicații bazate pe Groovy.
Sper că v-ați bucurat de toate tutorialele informative din această serie Spock. Suntem într-adevăr siguri că aceste tutoriale ți-ar fi îmbogățit cunoștințele și înțelegerea despre Spock.
PREV Tutorial | PRIMUL Tutorial
Lectură recomandată
- Testarea unităților de scriere cu Spock Framework
- Spock pentru integrare și testare funcțională cu seleniu
- Spock batjocură și stubbing (exemple cu tutoriale video)
- Testare bazată pe date sau parametrizată cu Spock Framework
- Tutorial Spock: Testare cu Spock și Groovy
- Întrebări și răspunsuri la interviu
- Întrebări și răspunsuri la interviuri de testare ETL
- 20 Cele mai populare întrebări și răspunsuri la interviu TestNG