İyi yazılmış bir test paketi, belirli bir özellik için birkaç teste sahip olacaktır. İlişkili özellikleri gruplandırarak, birkaç test grubu arasındaki ilişkiyi ifade edebilirsiniz. Birim test sınıflarını gruplamanın en önemli faydalarından biri, gruplandırılmış testler kaynakları paylaştığı için yazdığınız test kodu miktarını azaltabilmesidir.
JUnit 5, @Nested ek açıklamasını kullanarak iç içe testler oluşturmanıza izin verir. Bu yazımızda @Nested ek açıklamasının ne olduğunu ve nasıl kullanılacağını öğreneceksiniz.
İç İçe Test Nedir?
JUnit'in @Nested ek açıklaması, ilişkilendirdiği sınıfın başka bir sınıfın üyesi olan bir iç sınıf olduğunu belirtir. Yuvalanmış bir test, @Nested ek açıklamasını içeren bir test sınıfıdır, çünkü bu, üst düzey bir test sınıfı içinde bir (veya daha fazla) iç sınıf olduğu anlamına gelir. İç içe geçmiş bir sınıf, üst düzey bir sınıf içinde veya yine iç içe geçmiş bir sınıf içinde görünebilir.
Test Edilecek Java Sınıfları Oluşturma
Yuvalanmış bir test sınıfı, üst sınıfının tüm özelliklerini devralır. Bu nedenle, iç içe geçmiş bir test oluşturmak için en iyi zaman, test durumlarının mantıksal olarak gruplandırıldığı veya tek bir test senaryosunun farklı özelliklere sahip olduğu zamandır. Buna iyi bir örnek, bir sınıfın faydalı nesneler yaratma yeteneğini test etmek istediğiniz zamandır. Başka bir örnek, tek bir yöntemin iki veya daha fazla amacı olduğu durumdur.
İşte bir perakende uygulamasında kullanabileceğiniz ve iç içe test oluşturmayı gösteren örnek bir sınıf.
halksınıfMüşteri{
korumalıint Müşteri Kimliği;
korumalı String müşteriAdı;
korumalı Dize müşteriKodu;// varsayılan kurucu
halkMüşteri(){
Bu.müşteri kimliği = 0;
Bu.müşteriAdı = "";
Bu.müşteriKodu ="";
}// birincil kurucu
halkMüşteri(int müşteriId, Dize müşteriAdı, Dize müşteriKodu){
Bu.müşteriKimliği = müşteriKimliği;
Bu.müşteriAdı = müşteriAdı;
Bu.müşteriKodu = müşteriKodu;
}// kurucuyu kopyala
halkMüşteri(Müşteri müşteri){
Bu.müşteriKimliği = müşteri.müşteriKimliği;
Bu.müşteriAdı = müşteri.müşteriAdı;
Bu.müşteriKodu = müşteri.müşteriKodu;
}// alıcılar ve ayarlayıcılar
halkintgetCustomerId(){
geri dönmek Müşteri Kimliği;
}halkgeçersizsetCustomerId(int Müşteri Kimliği){
Bu.müşteriKimliği = müşteriKimliği;
}halk Sicim MüşteriAdı al(){
geri dönmek müşteri adı;
}halkgeçersizsetMüşteriAdı(Dize müşteriAdı){
Bu.müşteriAdı = müşteriAdı;
}halk Sicim müşteri kodunu al(){
geri dönmek müşteri kodu;
}halkgeçersizsetCustomerCode(Dize müşteriKodu){
Bu.müşteriKodu = müşteriKodu;
}// müşteri türüne göre bir müşteri indirim yüzdesi belirleyin
halkçiftmüşteri tipi(Dize müşteriKodu){
çift indirim = 0;eğer (customerCode.toLowerCase().equals("ön")) {
indirim = 0.10;
} başkaeğer (customerCode.toLowerCase().equals("gen")) {
indirim = 0.02;
} başkaeğer (customerCode.toLowerCase().equals("yeni")) {
indirim = 0.05;
}geri dönmek indirim;
}
// müşteri türüne göre bir müşterinin genel toplamını belirleyin
halkçiftGenel Toplam(çift Toplam){
çift indirim = müşteriTürü (müşteriKodu);
çift İndirim Yüzdesi = toplam * indirim;
çift finalTotal = toplam - indirimPercentage;
geri dönmek nihaiToplam;
}
}
Bu Müşteri sınıfı, bir Java Sınıfının tüm bileşenlerini içerir ve iki yöntemle tamamlanır.
JUnit 5 ile İç İçe Test Oluşturma
Customer sınıfının birkaç oluşturucusu, alıcısı ve ayarlayıcısı ve iki yöntemi vardır. Yeni bir Müşteri nesnesi oluşturan ve tüm bileşenlerini test eden iç içe geçmiş bir sınıf (Müşteri test sınıfı içinde) oluşturabilirsiniz.
içe aktarmakstatikorg.junit.Jüpiter.api.İddialar.*;
içe aktarmakorg.junit.Jüpiter.api.Ekran adı;
içe aktarmakorg.junit.Jüpiter.api.İç içe;
içe aktarmakorg.junit.Jüpiter.api.Ölçek;@DisplayName("Nasıl Yapılacağını Gösteren Müşteri Test Sınıfı Yaratmakiç içe Testler.")
sınıfMüşteri Testi{
korumalıint müşteri kimliği = 301;
korumalı Dize müşteriAdı = "mike wilson";
korumalı Dize müşteriKodu = "Ön";
korumalıçift toplam = 600;@İç içe
@Ekran adı("Üst Düzey Test Sınıfı İçinde Müşteri Oluşturucu İç İçe Test Sınıfı")
sınıfMüşteri Oluşturucu Testi{
müşteri müşteri = yeni Müşteri (müşteriKimliği, müşteriAdı, müşteriKodu);
çift grandTotal = müşteri.grandTotal (toplam);
@Ölçek
@Ekran adı("Müşteriyi Test Etme's Sınıf Oluşturucuları, Alıcılar ve Ayarlayıcılar ve Yöntemler.")
geçersizmüşteri Oluşturucu(){
AssertAll(() -> {
iddiaEşittir(Müşteri Kimliği, müşteri.getCustomerId());
iddiaEşittir(müşteri adı, müşteri.getCustomerName());
iddiaEşittir(müşteri kodu, müşteri.getCustomerCode());
iddiaEşittir(0.10, müşteri.müşteri tipi(müşteri kodu));
iddiaEquals (540, grandTotal);
});
}
}
}
CustomerTest sınıfı, iç içe bir CustomerBuilderTest sınıfının en üst düzey test sınıfıdır. CustomerBuilderTest, yeni bir Müşteri nesnesi oluşturur ve bileşenlerini test eder. iddia testleri.
CustomerTest test sınıfını yürütmek, aşağıdaki başarılı test sonuçlarını verir:
Test sınıflarının adları ve test yöntemi açıklayıcı ve kapsamlıdır. @DisplayName Ek Açıklama.
Yazılımın Nasıl Test Edileceğini Bilmek Çok Önemlidir
Teknoloji, çoğu insan için günlük yaşamın önemli bir yönüdür. Tam olarak yapması gerekeni yapan bir yazılım yaratmanın riskleri hiç bu kadar yüksek olmamıştı.
Başka bir nesneye olan yakınlığını yanlış hesaplayan sürücüsüz bir araba, büyük bir kazaya neden olabilir. Bu nedenle, uygulamanızı geliştirmenin her aşamasında test etmeniz gerekir.