spock interview questions with answers
junit testfall exempel i förmörkelse
Rensa din Spock-intervju Framgångsrikt med den här listan över Spock-intervjufrågor:
I denna Spock-handledning för alla , vi utforskade allt om Integration och funktionstestning i Spock i vår tidigare handledning.
Denna handledning kommer att täcka de vanligaste intervjufrågorna kring Spock-ramverket.
Vi kommer också att försöka förstå Spock fixturmetoder och inbyggda tilläggsstöd som gör Spock till ett riktigt kraftfullt verktyg för många testtyper som Unit, Integration och end to end.
De mest populära Spock-intervjufrågorna
Nedan listas några av de vanligaste Spock-intervjufrågorna med svar och exempel.
Låt oss utforska !!
F # 1) Kan ett Spock-test ha flera när och sedan blockerar?
Svar: Det rekommenderas vanligtvis att ha små tester eller scenarier, eftersom det kan vara en kodlukt att försöka göra många saker i ett enda test. Med detta sagt är det helt giltigt att ha flera när och sedan blockerar i ett test. Testet kommer endast att anses vara framgångsrikt när alla dåvarande block är i godkänt tillstånd.
Låt oss se ett exempel för att illustrera detta:
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 }
I ovanstående kodblock kan du se att vi har 2 när och sedan blockerar.
Observera nedanstående punkter:
- Blocken exekveras i den ordning de ser ut, dvs. sekventiellt.
- Misslyckande av någon då blockerar kommer att leda till att testet misslyckas.
- Påståenden i alla då block bör passera för att det övergripande testet ska lyckas.
F # 2) Vilka alla fixturmetoder finns i Spock?
Svar: Fixture-metoder är som återuppringningar som anropas när en viss händelsekrok utlöses.
Spock tillhandahöll 4 testarmaturer som utlöses mot olika händelser:
- setupSpec - Körs en gång innan hela Spec-filkörningen startar.
- cleanupSpec - Körs en gång när alla tester i den angivna Spec-filen körs
- uppstart - Körs en gång före varje test i specifikationen.
- städa - Körs en gång efter varje test i specifikationen.
Låt oss se ett kodprov för att illustrera fixturmetoderna:
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****' }}
Nedan visas utdata från ovanstående kodexempel:
i installationsspecifikation!
i installation!
**** testspec1 ****
i sanering!
i installation!
**** testspec2 ****
i sanering!
i saneringsspecifikationer!
Som visas ovan kan du märka att installations- och rengöringsspecifikationen kallas bara en gång för hela specifikationen och installations- och rengöringsstegen / fixturer anropas en gång per test.
F # 3) Kan Spock-test användas för att testa REST-baserade tjänster?
Svar: Ja, Spock-ramverk kan användas för att skapa E2E- eller integrationstester för distribuerade vilotjänster med vanliga Java-bibliotek som Restmall etc. (Observera också att Spock också kan användas för att köra tester för Spring boot-baserade applikationer samt med andra ramar som Selen ).
Låt oss se detta med ett enkelt exempel som använder Spring's RestTemplate-klass och utför en get-operation på ett offentligt värd-API och kontrollerar att svaret är icke-null.
Exempel:
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 } }
I exemplet ovan kan du hänvisa till Spock-specifikationen som används för att hävda svaret från ett offentligt API.
F # 4) Vilka är begränsningarna i Spock-ramverket?
Svar: Även om inlärningskurvan för Spock-ramverket inte är så brant som den är lätt att lära sig, gör dess deklarativa syntax den mycket läsbar.
Under tiden finns det några punkter som kan övervägas:
- För applikationer på Java-kodbas kommer Spock att resultera i att du lägger till en ny språkstack, dvs. Groovy.
- Spock-tester går något långsammare än inbyggda JUnit-tester.
- IDE-stöd för Spock är inte lika bra som för andra ramverk som JUnit.
Trots alla ovanstående punkter överväger fortfarande fördelarna med Spock-ramverket den lilla lista över nackdelar som Spock har.
F # 5) Förklara några av de inbyggda tilläggen för Spock-ramverket.
Svar: Spock tillhandahåller många inbyggda tillägg / krokar / utlösare som mestadels är anteckningsbaserade (vi såg några av dem i avsnittet / frågan om testarmaturer).
Cisco Networking intervju frågor och svar pdf
Låt oss se några av de inbyggda diskussionerna med exempel:
@Ignorera: För att förhindra att en funktion (eller enskild metod) körs. För att bara använda en dekorationsmetod (individuell testmetod) eller en hel specifikation kommer detta att säkerställa att den antecknade metoden eller klassen inte körs.
@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: Denna kommentar är användbar när du bara vill välja en och köra resten av metoderna i den angivna specifikationen.
@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 }
Som framgår av exemplet ovan kommer metoden som kommenteras med @IgnoreRest att köras och resten av testerna ignoreras.
@IgnoreIf: Denna kommentar är en villkorlig ignorering.
Till exempel: Om du inte vill köra några tester på Mac OS kan du använda en kombination av @IgnoreIf med System.getProperty (“os.name”) som säkerställer att testerna endast körs om det matchande operativsystemet hittas .
Låt oss försöka förstå detta med nedanstående kodexempel:
@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 }
I ovanstående kodexempel har vi använt @IgnoreIf-annotering med ett villkor på System.getProperty som söker efter ”Mac” i fastighetsvärdet och ignorerar endast om villkorsmatchningen lyckas.
Låt oss se en tillägg till här, dvs. @Paus: Detta hjälper till att nämna ett timeoutvärde i den enhet du väljer för testet som körs och om timeouttröskeln bryts kommer testet att ge ett undantag.
En annan viktig punkt att notera här är, @Timeout-anteckningen kan också nämnas över hela specifikationen och detta kommer att kombinera varaktigheten för alla enskilda tester och kasta ett undantag vid tröskelöverträdelse.
@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 } }
Om den totala exekveringstiden för specifikationen överstiger 10 ms i ovanstående kod misslyckas scenariekörningen. Du kan se utdata med felinformation i felkonsolen.
I likhet med de ovan nämnda tilläggen finns det ett par andra inbyggda tillägg som:
@Kräver: Vilket kräver att ett specifikt villkor är sant.
@Problem: För att länka eventuella brister i samband med testfallet etc.
Dessa tillägg ger Spock-specifikationerna mycket flexibilitet och kraft och ger mycket kontroll för testutförandet.
Slutsats
Således har vi täckt de mest populära Spock-intervjufrågorna här i denna handledning. Inlärningskurvan för Spock är låg på grund av att språket groovy följer en deklarativ programmeringsstil och är mycket läsbar.
Trots att det är relativt nytt, växer Spock popularitet som ett valfritt ramverk för att skriva olika typer av tester i Java eller Groovy-baserade applikationer.
appar för att spionera på en annan telefon
Hoppas, du gillade alla informativa handledning i denna Spock-serie. Vi är verkligen säkra på att dessa handledning skulle ha berikat din kunskap och förståelse för Spock.
PREV-handledning | FÖRSTA självstudier
Rekommenderad läsning
- Skrivenhetstester med Spock Framework
- Spock för integration och funktionstestning med selen
- Spock Mocking and Stubbing (Exempel med videotutorials)
- Datadriven eller parametrerad testning med Spock Framework
- Spock Tutorial: Testing With Spock And Groovy
- Intervjufrågor och svar
- ETL Testing Intervju Frågor och svar
- 20 mest populära TestNG-intervjufrågor och svar