spock integration
Spock per i test di integrazione (come i servizi di riposo) e per i test funzionali (con selenio):
Abbiamo esplorato Schernire, soffocare e spiare a Spock nel nostro precedente tutorial.
In questo Serie completa di tutorial di formazione su Spock , finora abbiamo coperto, scrivendo unit test utilizzando il framework Spock. Gli unit test, in genere testano una singola classe con tutti i punti di integrazione o le chiamate esterne vengono sostituite da chiamate fittizie o stub.
I test di integrazione, al contrario, testano i punti di integrazione tra 2 pezzi. Per esempio, testare i contratti tra 2 servizi, testare l'integrazione tra servizio e database, ecc.
In questo tutorial, impareremo come usare Spock per Test d'integrazione (come i servizi di riposo) e per test funzionali . Per esempio , Integrare Spock con selenio, ecc.
Ecco un video tutorial:
Cosa imparerai:
Integrazione di Spring Spock
Proviamo a capirlo con un esempio di come possiamo integrare Spock con le app basate su Spring Boot MVC.
domande di intervista webdriver selenio per 4 anni di esperienza
Sebbene Spring abbia un ricco set di annotazioni e si integri bene con JUnit, Spock aggiunge o aiuta ad aggiungere un approccio di test in stile BDD di facile lettura che rende quindi le specifiche di test altamente leggibili.
Informazioni sull'applicazione
Useremo un'applicazione di avvio a molla basata su graduale, con un controller basato su riposo che implementa un endpoint.
Dipendenze richieste
In aggiunta alle dipendenze dello spring boot, aggiungeremo la solita dipendenza di compilazione groovy così come una dipendenza core di Spock. Un'altra dipendenza basata su Spock è Spock-primavera , che consente alle specifiche di Spock di utilizzare annotazioni basate su Spring.
Di seguito è riportato l'elenco delle dipendenze richieste:
- implementazione 'org.springframework.boot: spring-boot-starter'
- testImplementation 'org.springframework.boot: spring-boot-starter-test'
- compila 'org.codehaus.groovy: groovy-all: 2.4.8'
- testCompile 'org.spockframework: spock-core: 1.2-groovy-2.4'
- testCompile gruppo: 'org.spockframework', nome: 'spock-spring', versione: '1.2-groovy-2.4'
Iniziare
Cominciamo con il test vero e proprio.
Nel primo test, controlleremo se il bean viene creato per la classe controller che abbiamo aggiunto. Per questo, l'applicazione dovrebbe essere avviata quando viene eseguito il test.
Per ottenere ciò, aggiungeremo @ SpringBootTest annotazione che garantisce l'esecuzione del contesto dell'applicazione prima che il test venga eseguito.
Di seguito è riportato il codice di prova:
@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 } } Nel codice sopra, puoi vedere che abbiamo usato @SpringBootTest annotazione che garantisce l'avvio di ApplicationContext, prima che il test venga eseguito e abbiamo anche cablato automaticamente il bean WebController secondo le annotazioni Spring.
Il test convalida che il bean Webcontroller venga istanziato come parte del contesto dell'applicazione.
Vediamo un altro test, in cui raggiungeremo l'endpoint esposto dal controller Web e convalideremo il codice di risposta e il testo della risposta attraverso le classi di test del framework Spring, ad esempio MockMvc e MockMvcRequestBuilders.
Fare riferimento al codice di prova di seguito:
@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!' } } Spock Selenium Integration
Ecco un video tutorial:
Vediamo ora un esempio di come possiamo integrare i test basati sul selenio utilizzando Spock. Questi non richiedono altra dipendenza specifica, ma in generale è possibile utilizzare i metodi esistenti per organizzare i test del selenio utilizzando BDD in modo più efficace.
In questo Esempio, vedremo un semplice test del selenio tramite ChromeWebDriver che prova a cercare una parola chiave su google search e verifica il titolo della pagina dei risultati di ricerca.
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') } } Si noti come abbiamo dichiarato l'istanza webdriver per ChromeDriver e utilizzata all'interno delle specifiche.
Inoltre, in un dato passaggio, abbiamo dichiarato / definito tutti gli elementi web che avremmo richiesto per l'esecuzione del test.
Il framework Spock può anche essere integrato e utilizzato con il framework di automazione esistente e possiamo semplicemente sostituire i test basati su Java / JUnit con Spock per utilizzare la potenza della programmazione dichiarativa in Groovy.
Conclusione
In questo tutorial, abbiamo esplorato i diversi modi di integrare i test basati su Spock con altri framework e tipi di test come i test di integrazione e i test End-2-End.
Abbiamo visto esempi di integrazione di Spock con il framework Spring e test di integrazione basati sul selenio. Simile a questi, Spock può anche essere utilizzato per scrivere test con client Rest per test di integrazione di API basate su REST.
Preparati rapidamente per un'intervista a Spock con il tuo prossimo tutorial, che copre un elenco delle più importanti domande dell'intervista a Spock !!
Tutorial PREV | PROSSIMO Tutorial
Lettura consigliata
- Scrittura di unit test con Spock Framework
- Domande dell'intervista di Spock con risposte (le più popolari)
- Spock beffardo e stubbing (esempi con tutorial video)
- Test basato sui dati o parametrizzato con Spock Framework
- Tutorial di Spock: test con Spock e Groovy
- Integrazione del selenio con JMeter
- Le differenze tra test unitari, test di integrazione e test funzionali
- Test funzionale vs test non funzionale