spock integration
Entegrasyon Testi için Spock (Dinlenme Servisleri gibi) ve Fonksiyonel Test için (Selenium ile):
Hakkında keşfettik Spock'ta Alay Etme, Stubing ve Casusluk önceki eğitimimizde.
Bunda Spock'ta Tam Eğitim Eğitim Serisi , Şimdiye kadar Spock çerçevesini kullanarak birim testleri yazdık. Birim testleri, tipik olarak tek bir sınıfı test eder ve tüm entegrasyon noktaları veya harici çağrıların yerini sahte çağrılar veya stub'lar alır.
Entegrasyon testleri ise 2 parça arasındaki entegrasyon noktalarını test eder. Örneğin, 2 servis arasındaki sözleşmelerin test edilmesi, servis ve veritabanı arasındaki entegrasyonun test edilmesi vb.
Bu eğiticide, Spock'un nasıl kullanılacağını öğreneceğiz. Entegrasyon testi (dinlenme hizmetleri gibi) ve fonksiyonel test . Örneğin , Spock'u Selenium ile entegre etmek, vb.
İşte bir Video Eğitimi:
Ne öğreneceksin:
Spring Spock Entegrasyonu
Spock'u Spring boot MVC tabanlı uygulamalarla nasıl entegre edebileceğimize dair bir örnekle bunu anlamaya çalışalım.
ücretsiz en iyi mp3 indirme sitesi nedir
Spring, zengin bir not setine sahip olmasına ve JUnit ile iyi bir şekilde entegre olmasına rağmen, Spock, test özelliklerini oldukça okunabilir kılan, okunması kolay BDD tarzı bir test yaklaşımı ekler veya eklemeye yardımcı olur.
Uygulama hakkında
Bir bitiş noktası uygulayan dinlenme tabanlı bir denetleyiciye sahip gradle tabanlı bir yay önyükleme başlangıç uygulaması kullanacağız.
Gerekli Bağımlılıklar
Yay önyükleme bağımlılıklarına ek olarak, olağan mükemmel derleme bağımlılığının yanı sıra bir Spock çekirdek bağımlılığı da ekleyeceğiz. Spock tabanlı başka bir bağımlılık ise Spock-yay , Spock belirtimlerinin Yay tabanlı ek açıklamaları kullanmasına olanak tanır.
Aşağıda listelenen gerekli bağımlılıkların listesidir:
- uygulama 'org.springframework.boot: spring-boot-starter'
- testImplementation 'org.springframework.boot: spring-boot-starter-test'
- 'org.codehaus.groovy: groovy-all: 2.4.8' derleyin
- testCompile 'org.spockframework: spock-core: 1.2-groovy-2.4'
- testCompile grubu: 'org.spockframework', ad: 'spock-spring', sürüm: '1.2-groovy-2.4'
Başlarken
Gerçek teste başlayalım.
İlk testte, eklediğimiz denetleyici sınıfı için çekirdeğin oluşturulup oluşturulmadığını kontrol edeceğiz. Bunun için uygulama test çalıştırıldığında başlatılmalıdır.
Bunu başarmak için @ ekleyeceğiz SpringBootTest Test yürütülmeden önce uygulama Bağlamının çalıştırılmasını sağlayan ek açıklama.
Test kodu aşağıdadır:
@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 } }
Yukarıdaki kodda, kullandığımızı görebilirsiniz. @Hayalhanemersin Test yürütülmeden önce ApplicationContext'in başlatılmasını sağlayan ek açıklama ve ayrıca WebController çekirdeğini Bahar notlarına göre otomatik olarak bağladık.
Test, Webcontroller çekirdeğinin uygulama bağlamının bir parçası olarak somutlaştırıldığını doğrular.
Web denetleyicisi tarafından açığa çıkarılan uç noktaya ulaşacağımız ve yanıt kodunu ve yanı sıra MockMvc ve MockMvcRequestBuilders gibi Spring çerçeve test sınıfları aracılığıyla yanıt metnini doğrulayacağımız başka bir test görelim.
Lütfen aşağıdaki test koduna bakın:
@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 Entegrasyonu
İşte bir Video Eğitimi:
Şimdi Selenium tabanlı testleri Spock kullanarak nasıl entegre edebileceğimize bir örnek görelim. Bunlar başka belirli bir bağımlılık gerektirmez, ancak genel olarak BDD'yi daha etkili bir şekilde kullanarak selenyum testlerini düzenlemek için mevcut yolları kullanabilirsiniz.
Bunda Misal, ChromeWebDriver aracılığıyla, google aramada bir anahtar kelime aramaya ve arama sonuçları sayfasının başlığını doğrulamaya çalışan basit bir selenyum testi göreceğiz.
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') } }
ChromeDriver için webdriver örneğini nasıl ilan ettiğimize ve spesifikasyon dahilinde kullandığımıza dikkat edin.
Ayrıca, belirli bir adımda, test yürütmek için ihtiyaç duyacağımız tüm web öğelerini bildirdik / tanımladık.
Spock çerçevesi ayrıca mevcut Otomasyon çerçevesiyle entegre edilebilir ve kullanılabilir ve Groovy'deki bildirim temelli programlamanın gücünü kullanmak için Java / JUnit tabanlı testleri Spock ile değiştirebiliriz.
Sonuç
Bu eğiticide, Spock tabanlı testleri diğer çerçevelerle ve Entegrasyon testleri ve Son 2-Son testleri gibi test türleriyle entegre etmenin farklı yollarını keşfettik.
Spring çerçevesi ve Selenium tabanlı Entegrasyon testleri ile Spock entegrasyonunun örneklerini gördük. Bunlara benzer şekilde Spock, REST tabanlı API'lerin Entegrasyon testi için Rest istemcileriyle testler yazmak için de kullanılabilir.
En önemli Spock Mülakat Sorularının bir listesini içeren yaklaşan eğitiminizle birlikte bir Spock Röportajına hızlıca hazırlanın !!
PREV Eğitimi | SONRAKİ Eğitici
Önerilen Kaynaklar
- Spock Framework ile Birim Testleri Yazma
- Spock Mülakat Soruları ve Cevapları (En Popüler)
- Spock Alay ve Stubbing (Video Eğitimleri ile Örnekler)
- Spock Framework ile Veriye Dayalı veya Parametreli Test
- Spock Eğitimi: Spock ve Groovy ile Test Etme
- Selenium'un JMeter ile entegrasyonu
- Birim Testi, Entegrasyon Testi ve İşlevsel Test Arasındaki Farklar
- Fonksiyonel Test ve Fonksiyonel Olmayan Test