Bu harika bir soru! Bence bunun temel nedeni aşağıdaki, biz sadece birim test için JUnit kullanıyoruz. Bu yüzden soru bölünmelidir:
- Entegrasyonumda (veya birimden daha yüksek testlerde) Mockito.verify () yöntemini kullanmalı mıyım ?
- Kara kutu birim testlerimde Mockito.verify () kullanmalı mıyım ?
- Beyaz kutu birim testlerimde Mockito.verify () kullanmalı mıyım ?
Biz daha yüksek-daha-biriminin test yok sayacak eğer öyleyse, soru, "rephrased edilebilir kullanarak beyaz kutu Biraz yapabilir Mockito.verify () ile birim test ünitesi testi ve benim olabilir uygulanması arasındaki büyük çift oluşturur gri-box" " Birim testi ve bunun için hangi temel kuralları kullanmalıyım ".
Şimdi, tüm bu adım adım ilerleyelim.
* - Mockito.verify () 'i entegrasyonumda (veya herhangi bir birimden daha yüksek testlerde) kullanmalı mıyım? * Cevabın açıkça hayır olduğunu düşünüyorum, ayrıca bunun için alay kullanmamalısınız. Testiniz mümkün olduğunca gerçek uygulamaya yakın olmalıdır. Uygulamanın izole kısmı değil, tam kullanım durumunu test ediyorsunuz.
* kara kutu vs beyaz kutu birim testi * Eğer gerçekten ne yaptığınızı kara kutu yaklaşımı kullanıyorsanız , (tüm eşdeğerlik sınıfları) girdi, bir durum ve beklenen çıktı alacak testleri sağlar. Bu yaklaşımda genel olarak alayların kullanılması haklıdır (sadece doğru şeyi yaptıklarını taklit edersiniz; onları test etmek istemezsiniz), ancak Mockito.verify () öğesini çağırmak gereksizdir.
Gerçekten ne yaptığınızı beyaz kutu yaklaşımı kullanıyorsanız , ünitenizin davranışını test ediyorsunuz. Mockito.verify () işlevini çağırmak bu yaklaşımda çok önemlidir, ünitenizin beklediğiniz gibi davrandığını doğrulamalısınız.
gri kutu testi için temel kurallar
Beyaz kutu testi ile ilgili sorun, yüksek bir bağlantı oluşturmasıdır. Olası bir çözüm, beyaz kutu testi değil, gri kutu testi yapmaktır. Bu, siyah-beyaz kutu testlerinin bir kombinasyonudur. Ünitenizin davranışını beyaz kutu testinde olduğu gibi gerçekten test ediyorsunuz, ancak genel olarak mümkün olduğunda uygulamadan bağımsız hale getiriyorsunuz . Mümkün olduğunda, kara kutu durumunda olduğu gibi bir kontrol yapacaksınız, sadece çıktının beklenen şey olduğunu iddia ediyor. Yani, sorunuzun özü mümkün olduğu zamandır.
Bu gerçekten zor. İyi bir örneğim yok, ama size örnekler verebilirim. Yukarıda equals () vs equalsIgnoreCase () ile belirtilen durumda Mockito.verify () öğesini çağırmamalısınız, sadece çıktıyı onaylamalısınız. Bunu başaramadıysanız, kodunuzu daha küçük birime ayırabilirsiniz. Öte yandan, bazı @Servisiniz olduğunu ve @Servis'e sarılmış olan @ Web-Service'i yazdığınızı varsayalım - bu, @Service'e yapılan tüm çağrıları devrediyor (ve bazı ekstra hata işlemleri yapıyor). Bu durumda Mockito.verify () işlevini çağırmak önemlidir, @Serive için yaptığınız tüm kontrollerinizi çoğaltmamalısınız, doğru parametre parametresi listesiyle @Service'e çağırdığınızı doğrulayın.