spock interview questions with answers
Ryd dit Spock-interview med succes med denne liste over Spock-interviewspørgsmål:
I denne Spock Tutorials for alle , vi udforskede alt om Integration og funktionstest i Spock i vores tidligere tutorial.
Denne vejledning dækker de hyppigst stillede interviewspørgsmål omkring Spock-rammen.
Vi vil også forsøge at forstå Spock fixturemetoder og indbyggede understøttelser af udvidelser, som gør Spock til et virkelig kraftfuldt værktøj til mange testtyper som Unit, Integration og end to end.
Mest populære Spock Interview-spørgsmål
Nedenfor er nogle af de mest stillede Spock Interview-spørgsmål med svar og eksempler.
Lad os udforske !!
Q # 1) Kan en Spock-test have flere hvornår og derefter blokke?
Svar: Det anbefales generelt at have små test eller scenarier, da det kan være en kodelugt at prøve at gøre en masse ting i en enkelt test. Når det er sagt, er det helt gyldigt at have flere hvornår og derefter blokerer i en test. Testen betragtes kun som vellykket, når alle de daværende blokke er i godkendt tilstand.
Lad os se et eksempel for at illustrere dette:
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 ovenstående kodeblok kan du se, at vi har 2 hvornår og derefter blokke.
Bemærk nedenstående punkter:
- Blokkene udføres i rækkefølgen af deres udseende, dvs. sekventielt.
- Fejl på nogen, der blokerer, fører til, at testen mislykkes.
- Påstande i alle de daværende blokke skal bestå for at den samlede test skal lykkes.
Q # 2) Hvad er alle fastgørelsesmetoder tilgængelige i Spock?
Svar: Armaturmetoder er som tilbagekald, der kaldes, når en bestemt begivenhedskrog udløses.
Spock leverede 4 testarmaturer, der udløses mod forskellige begivenheder:
- setupSpec - Kører en gang før hele Spec-filudførelsen starter.
- cleanupSpec - Kører en gang, når alle testene i den givne Spec-fil udføres
- Opsætning - Kører en gang før hver test i specifikationen.
- Ryd op - Kører en gang efter hver test i specifikationen.
Lad os se en kodeeksempel for at illustrere fastgørelsesmetoderne:
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****' }}
Nedenfor vises output fra ovenstående kodeeksempel:
i installationsspecifikation!
i opsætning!
**** testspec1 ****
i oprydning!
i opsætning!
**** test spec2 ****
i oprydning!
i oprydningsspecifikationer!
Som vist ovenfor kan du bemærke, at opsætnings- og oprydningsspecifikationen kun kaldes en gang for hele spec, og opsætning og oprydningstrin / inventar kaldes en gang pr. Test.
Spørgsmål nr. 3) Kan Spock-test bruges til at teste REST-baserede tjenester?
Svar: Ja, Spock framework kan bruges til at oprette E2E- eller integrationstest til implementerede hviletjenester ved hjælp af almindelige Java-biblioteker som Rest-skabelon osv. (Bemærk også, Spock kan også bruges til at køre tests til Spring boot-baserede applikationer såvel som med andre rammer som Selen ).
Lad os se dette med et simpelt eksempel, der bruger Spring's RestTemplate-klasse og udfører en get-operation på en offentlig hostet API og kontrollerer, at svaret er ikke-nul.
Eksempel:
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 ovenstående eksempel kan du henvise til Spock-specifikation, der bruges til at hævde svaret fra en offentlig API.
Spørgsmål nr. 4) Hvad er begrænsningerne i Spock-rammen?
Svar: Selvom læringskurven for Spock-rammen ikke er så stejl, som den er let at lære, gør dens deklarative syntaks det meget læsbart.
I mellemtiden er der et par punkter, der kan overvejes:
- For applikationer på Java-kodebase vil brug af Spock resultere i tilføjelse af en ny sprogstabel, dvs. Groovy.
- Spock-tests kører lidt langsommere end native JUnit-tests.
- IDE-understøttelse af Spock er ikke så god som for andre rammer som JUnit.
På trods af alle ovenstående punkter opvejer fordelene ved Spock-rammen stadig den lille liste over ulemper, som Spock har.
Q # 5) Forklar nogle af de indbyggede udvidelser af Spock-rammen.
Svar: Spock giver mange indbyggede udvidelser / kroge / udløsere, der for det meste er baseret på annoteringer (vi så et par af dem i sektionen / spørgsmålet om testarmaturer).
Lad os se nogle af den indbyggede diskussion med eksempler:
flet sortering c ++ implementering
@Ignorere: For at forhindre, at en funktion (eller individuel metode) bliver udført. For at bruge simpelthen dekorationsmetoden (individuel testmetode) eller en hel spec, vil dette sikre, at den kommenterede metode eller klasse ikke bliver udført.
@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: Denne kommentar er nyttig, når du bare vil vælge en og udføre resten af metoderne i den givne specifikation.
@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 det ses i ovenstående eksempel, vil metoden, der er kommenteret med @IgnoreRest, blive udført, og resten af testene ignoreres.
@IgnoreIf: Denne kommentar er en betinget ignorering.
For eksempel: Hvis du ikke vil køre nogle test på Mac OS, kan du bruge en kombination af @IgnoreIf med System.getProperty (“os.name”), som vil sikre, at testene kun køres, hvis det matchende OS findes .
Lad os prøve at forstå dette med nedenstående kodeeksempel:
@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 ovenstående kodeeksempel har vi brugt @IgnoreIf-kommentar med en betingelse på System.getProperty, der kontrollerer 'Mac' i ejendomsværdien og kun ignorerer, hvis betingelsen matcher er vellykket.
Lad os se en ekstra udvidelse her, dvs. @Tiden er gået: Dette hjælper med at nævne en timeoutværdi i den enhed, du vælger til testen under udførelse, og hvis timeout-tærsklen overskrides, vil testen give en undtagelse.
Et andet vigtigt punkt at bemærke her er, at @Timeout-kommentaren også kan nævnes over den komplette specifikation, og dette vil kombinere varigheden af alle de enkelte tests og kaste en undtagelse i tilfælde af tærskelbrud.
hvordan man åbner bin-filer windows 10
@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 } }
I den ovennævnte kode, hvis den samlede eksekveringstid for spec overstiger 10 ms, mislykkes scenarieudførelsen. Du kan se output med fejloplysninger i fejlkonsollen.
I lighed med de ovennævnte udvidelser er der et par andre indbyggede udvidelser som:
@Kræver: Hvilket kræver, at en bestemt betingelse er sand.
@Problem: For at forbinde eventuelle mangler, der er forbundet med testsagen osv.
Disse udvidelser tilføjer Spock-specifikationer en masse fleksibilitet og styrke og giver en masse kontrol til testudførelsen.
Konklusion
Således har vi dækket de mest populære Spock Interview-spørgsmål her i denne vejledning. Læringskurven for Spock er lav på grund af det faktum, at sproget groovy følger en deklarativ programmeringsstil og er meget læsbar.
Selvom det er relativt nyt, vinder Spock popularitet som en valgfri ramme til at skrive forskellige slags tests i Java eller Groovy-baserede applikationer.
Håber, du nød alle de informative tutorials i denne Spock Series. Vi er virkelig sikre på, at disse tutorials ville have beriget din viden og forståelse af Spock.
PREV-vejledning | FØRSTE vejledning
Anbefalet læsning
- Skriveenhedstest med Spock Framework
- Spock til integration og funktionstest med selen
- Spock Mocking og Stubbing (Eksempler med videotutorials)
- Datadrevet eller parametreret test med Spock Framework
- Spock Tutorial: Test med Spock og Groovy
- Interviewspørgsmål og svar
- ETL Testing Interview Spørgsmål og svar
- 20 mest populære TestNG Interview Spørgsmål og svar