spock tutorial testing with spock
Uygulamalı Spock Eğitim Serisi: Spock çerçevesi ve Groovy Programlama Dili ile test etme
Bu eğitim dizisi, Spock Framework hakkındaki bilginizi tamamen zenginleştirecektir.
Kavramı kolayca anlamanız için her eğiticiye basit ve anlaşılır örnekler dahil edilmiştir.
Ücretsiz Spock Öğrenmeye Hazır Olun !!
Bu Serideki Tüm Spock Öğreticilerinin Listesi:
Yeni başlayanlar ve deneyimli profesyoneller için bu Yoğun Spock Eğitimi serisinin yardımıyla Spock'u ayrıntılı olarak öğrenin.
Eğitici # | Bağlantı |
---|---|
Öğretici # 1 | Spock ve Groovy'ye Giriş |
Öğretici # 2 | Spock ile Birim Testleri Yazma |
Öğretici # 3 | Spock ile Parametreli Test |
Öğretici # 4 | Spock Alay ve Stubbing |
Öğretici # 5 | Selenyum Fonksiyonel Testli Spock |
Öğretici # 6 | Spock Mülakat Soruları |
Spock Serisindeki Öğreticilere Genel Bakış
Tutorial_Num | Ne öğreneceksin |
---|---|
Öğretici # 1 | Spock ve Groovy'ye Giriş Bu giriş öğretici, Groovy üzerine kurulu bir test çerçevesi olan Spock hakkında her şeyi açıklayacaktır. Çekirdekte BDD'yi zorlar ve çerçeve kullanılarak yazılan tüm testlerin BDD kurallarına uygun olmasını sağlar. |
Öğretici # 2 | Spock ile Birim Testleri Yazma Bu eğitimde, basit örneklerle birlikte Spock'ta Birim testine başlamak için gereken tüm ayrıntıları / adımları inceleyeceğiz. |
Öğretici # 3 | Spock ile Parametreli Test Bu eğitici, parametreli testlerin ne olduğunu ve veriye dayalı testlere ulaşmak için Spock'un yerleşik özelliklerinden nasıl yararlanabileceğinizi açık bir şekilde açıklayacaktır. |
Öğretici # 4 | Spock Alay ve Stubbing Bu Spock öğreticisi, kapsamlı Birim testlerinin en temel yapı taşlarından biri olan Alay ve Stubbing hakkında ayrıntılı olarak açıklanacaktır. |
Öğretici # 5 | Selenyum Fonksiyonel Testli Spock Bu bilgilendirici öğreticiden, Spock for Integration testi (dinlenme hizmetleri gibi) ve fonksiyonel testler için nasıl kullanılacağını öğrenin. Örneğin, Spock'u Selenium ile Entegre Etmek. |
Öğretici # 6 | Spock Mülakat Soruları Bu öğretici, Yanıtlar ve örneklerle birlikte En popüler Spock Mülakat Sorularının bir listesini içerir. Bu sorular gerçekten de herkesin ilk denemede spock röportajını başarıyla temizlemesine rehberlik edebilir. |
Ne öğreneceksin:
- Spock nedir?
- Spock ve Groovy Video Eğitimini İzleyin
- Groovy nedir?
- Spock ile Başlarken
- Spock Spesifikasyonunun Anatomisi
- Özel Blok Açıklamaları
- Önemli İpuçları
- Sonuç
- Önerilen Kaynaklar
Spock nedir?
Spock, Groovy üzerine kurulu bir test çerçevesidir. Çekirdekte BDD'yi zorlar ve çerçeve kullanılarak yazılan tüm testlerin BDD kurallarına uyup uymadığını garanti eder.
Ayrıca, JUnit'ten farklı olarak, Spock kendi Mocking ve test çift kitaplığına ve parametreleştirilmiş test senaryoları için tam desteğe sahiptir.
Bu eksiksiz paket sayesinde, Spock spesifikasyonları süper okunabilir ve ifade edilebilir ve bunun sonucunda klişe klişe kodunu azaltmak için amaçlanan şeyin giderek daha fazlasını elde etmek için test yaparlar.
Tüm bu harika özelliklere rağmen, Spock testleri, mevcut JUnit test çalıştırıcısı ve Maven ve Gradle gibi mevcut komut satırı / oluşturma araçları kullanılarak çalıştırılabilir, bu da onu daha da çekici hale getirir. Özetle, Spock, JUnit'in tüm iyi özelliklerini bir araya getirir, BDD (JBehave gibi çerçeveler & Salatalık ) ve alay etmenin yanı sıra.
İlerideki bölümlerde bu özelliklerin her birini gösteren birkaç örneğe göz atacağız.
Spock ve Groovy Video Eğitimini İzleyin
Groovy nedir?
Groovy, Java platformu için bir betik dilidir.
Groovy'nin temel özelliklerinden bazıları şunlardır:
# 1) Dinamik olarak tiplendirilmiş (bir değişkenin her türlü veriyi tutabildiği yerde) ve ayrıca statik olarak tiplenmiş (veri tutan değişkenler üzerinde güçlü tipte yapıları zorlar) olarak kullanılabilir.
Misal : Dizi ve haritayı aynı şekilde atadık ve dahili olarak groovy, türünü belirler ve uygun şekilde ele alır.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Yukarıdaki kod örneğinin çıktısı:
sınıf java.util.ArrayList
sınıf java.util.LinkedHashMap
#iki) Tüm geçerli Java kodları da geçerli bir Groovy kodudur (ancak ek özelliklere sahip olduğu için tam tersi değildir).
# 3) Diğer özellikler arasında meta programlama, kapatmalar, statik tip denetimi vb. Bulunur.
# 4) Aksine Java noktalı virgüller groovy'de isteğe bağlıdır ve ilkel türler varsayılan olarak nesne olarak kabul edilir.
Bu eğitim serisi daha çok Spock'a odaklandığından, sadece Spock tabanlı test spesifikasyonları yazmak için gerekli olan Groovy özelliklerini öğreneceğiz.
Spock ile Başlarken
Başlamak için, kullandığınız derleme sistemine bağlı olarak hangi kitaplıkların gerekli olduğunu görelim (ör. Gradle / maven).
Maven tabanlı projeler için
Maven projelerinin, mükemmel tabanlı spesifikasyonları çalıştırmak için Gradle kodunu derlemek için bir eklenti ve bir surefire eklentisi içermesi gerekecektir. Bu harika ve Spock'a ek olarak, bağımlılıklar ayrıca eklenmelidir.
org.codehaus.gmavenplus gmavenplus-plugin 1.5 testCompile maven-surefire-plugin 2.18.1 false **/*Spec.java org.spockframework spock-core 1.3-groovy-2.5 test
Gradle tabanlı Projeler için
Aşağıdaki gibi örnek bir gradle dosyası için, en önemli gereksinimler gradle eklentisini ve kod ve test için groovy bağımlılıklarını içerir.
plugins { id 'java' id 'groovy' } repositories { mavenCentral() } dependencies { compile 'org.codehaus.groovy:groovy-all:2.4.8' testCompile 'org.spockframework:spock-core:1.1-groovy-2.4' }
Spock Spesifikasyonunun Anatomisi
Spock testleri, JVM üzerinde çalışan herhangi bir dil için yazılabilir. Bu, uygulama kodunuz Java veya Scala veya Kotlin vb. Olsa bile, birim / entegrasyon testlerinizi Spock'ta (JUnit, JBehave, vb. Gibi diğerleri üzerinde) yazmayı seçebileceğiniz anlamına gelir.
Spock test sınıfları 'Spesifikasyonlar' (BDD dünyasındaki Spesifikasyonlara benzer) olarak adlandırılır ve Spock çerçevesinin 'Spesifikasyon' sınıfını genişletebilirsiniz. (Belirtim, Spock çerçevesinin temel sınıfıdır).
Her Spec dosyası birden fazla test içerebilir (bir JUnit test sınıfı dosyasına benzer) ve her test isteğe bağlı olarak BDD bloklarını içerebilir, yani, ne zaman ve sonra verilir. Bu, diğer BDD çerçevelerine benzer, burada bu bölümlerin her biri sırasıyla JUnit testlerindeki Düzenleme, Harekete Geçirme ve Onaylama bölümleriyle ilişkilendirilebilir.
Aşağıda, Spec ve testlerin hiyerarşisini gösteren bir blok diyagram bulunmaktadır.
Örnek bir spesifikasyonun kodda nasıl göründüğüne bakalım:
import spock.lang.Specification class SampleSpec extends Specification { def 'check case-insensitive equality of 2 strings'() { given: String str1 = 'hello' String str2 = 'HELLO' when: str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: str1 == str2 } def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 when: int result = input1 + input2 then: result == 35 } }
Burada dikkat edilmesi gereken birkaç önemli nokta:
# 1) Test senaryolarının adına bakın (def anahtar sözcüğünden sonraki dize): '2 dizinin büyük / küçük harf duyarlılığını kontrol edin'. Bunlar düz İngilizce dizelerdir ve bu, test isimlerini oldukça okunabilir kılar ve neyi başardığını test etmek için gerçek bir anlam verir.
Bunu, test adının c gibi görüneceği olağan JUnit testiyle karşılaştırın.
caseEquality_withValidInput_shouldBeEqual()
#iki) Verildiğinde, ne zaman ve sonra bloklar Düzenleme, Harekete Geçme ve Onaylama'ya eşdeğerdir. Bunların dışında, eşitlik iddiasını ima eden ve iddialarla ilişkili tüm standart kodlardan kaçınan o zaman (veya iddia bloğuna) bakın.
Misal , JUnit'teki bir iddia aşağıda gösterildiği gibi görünürdü:
@Test public void compareStrings_withValidInput_shouldReturnSuccess() { // Arrange String str1 = 'hello'; String str2 = 'HELLO'; // Act str1 = str1.toLowerCase(); str2 = str2.toLowerCase(); // Assert Assert.assertEquals(str1,str2); }
Yukarıdan da görebileceğiniz gibi, Spock testleri, testleri daha az ayrıntılı gösterir ve aynı zamanda iddialardaki (ve kurulum vb.) Tüm standart kodlardan kaçınır.
Özel Blok Açıklamaları
Bir testteki bağımsız blokların her biri için, yürütülmekte olan blok hakkında daha fazla ayrıntı sağlamak üzere bir dize olarak blok açıklamasını sağlamayı seçebilirsiniz. Bu, teste daha ayrıntılı bir yapı sağlamak için faydalıdır.
Aşağıda bir Örnek görelim:
def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
Önemli İpuçları
# 1) Spock tabanlı spesifikasyondaki tüm bloklar isteğe bağlıdır. Ancak, varsa 'ne zaman' ve 'o zaman' sırayla birlikte görünmelidir.
#iki) Yalnızca bir iddiayı doğrulamanız gerekiyorsa (ve ne zaman engellenmesine ihtiyacınız yoksa), ' beklemek ”Bloğu. Ön koşulları ne zaman ve sonra engellemeden önce bile ileri sürmek için kullanılabilir (ve bir testte birden çok kez kullanılabilir).
'When' bloğunu çalıştırmadan önce ön koşulu doğrulamak gibi örnek bir beklenti kullanımına bakalım.
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 }
Yukarıda gösterildiği gibi, beklenen blok, giriş alanlarının sınıf değerini ve aynı zamanda girişlerden birinin değerinin aralık içinde olmasını sağlamaya çalışıyor.
Sonuç
Bu Spock eğitiminde, Groovy programlama dilinin temellerini, bir Spock Spesifikasyonunun anatomisi veya temel yapı taşlarıyla birlikte ele aldık.
Groovy tabanlı Spock spesifikasyonları yazmak için gerekli bağımlılıklarla örnek bir proje oluşturduk ve bir örnek spesifikasyon yazdık.
Bu serideki diğer eğitimlerde, Spock çerçevesi tarafından sağlanan özellikleri daha derinlemesine inceleyeceğiz ve temiz ve okunabilir test özellikleri oluşturmak için harika dili nasıl kullandıklarını öğreneceğiz.
java bir diziye eleman ekleme
Spock'ta Test fikstürleri, Onaylar ve Raporlama hakkında daha fazla bilgi edinmek için yaklaşan Spock eğitimlerimizi takip etmeye devam edin.
Önerilen Kaynaklar
- Spock Framework ile Birim Testleri Yazma
- Spock Mülakat Soruları ve Cevapları (En Popüler)
- Selenyum ile Entegrasyon ve Fonksiyonel Test İçin Spock
- Spock Alay ve Stubbing (Video Eğitimleri ile Örnekler)
- Spock Framework ile Veriye Dayalı veya Parametreli Test
- Yeni Başlayanlar İçin Derinlemesine Eclipse Eğiticileri
- Örneklerle Java Yansıtma Eğitimi
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu