Daha İyi Kod Kalitesi İçin C#'ta Birim Testleri Nasıl Yazılır?

Daha Iyi Kod Kalitesi Icin C Ta Birim Testleri Nasil Yazilir



Çoğumuz geliştirici olarak işe başladığımızda, birim testini pek düşünmüyoruz veya buna çok fazla zaman ayırıyoruz. Ancak daha karmaşık ve paylaşılan bir veri havuzu ortamına girdiğinizde, kodu üretime yerleştirmeden önce test etmek giderek daha önemli hale gelir.

Bu nedenle, kapsamlı kod tabanlarıyla uğraşırken öğrenme eğrisinden kaçınmak için birim testinin temellerini geliştirme aşamalarınızın başlarında almanız önemlidir.

Bu eğitimde size C# ve MSTest test kitaplığını kullanarak birim testinin çerçevesini tanıtacağız. Birim testlerinin nasıl oluşturulacağını, bunların nasıl çalıştırılacağını ve bir testin başarısızlığı veya başarısından elde edilen sonuçların nasıl yorumlanacağını öğrenmenize olanak sağlayacak temel bir uygulama oluşturacağız.







Test Ortamı

Test çözümünü ve temel uygulamamızı nasıl yapılandıracağımızı tartışarak başlayalım.



Bu öğreticideki uygulamayı takip etmek ve çoğaltmak için aşağıdakilere sahip olduğunuzdan emin olun:



  1. Visual Studio'yu yükledim
  2. Makinenizde yapılandırılmış .NET ve C# araçları

Uygulama Oluştur

Daha sonra Visual Studio'yu açın ve yeni bir çözüm oluşturun. Bu eğitim için temel bir hesap makinesi uygulaması oluşturacağız. Uygulamaya dilediğiniz ismi verebilirsiniz.





Daha sonra yeni bir proje oluşturun ve proje türünü MSTest Test Projesi olarak seçin ve ona istediğiniz adı verin.



'Çözüme ekle'yi seçtiğinizden ve önceden oluşturulan uygulamayı seçtiğinizden emin olun.

Çözüm gezgininde gösterildiği gibi ana uygulamaya ve birim test projesine sahip olmalısınız.

Hesap Makinesi Uygulamasının Kodunu Yazın

Bir sonraki adım hesap makinesi uygulamamızın kodunu yazmaktır. Bunu CalcApp “program.cs” dosyasında yapabiliriz.

Temel işlevsellik aradığımız için kaynak kodunu şu şekilde ekleyebiliriz:

genel sınıf Hesap Makinesi
{
halk çift Eklemek ( çift A , çift B )
{
geri dönmek A + B ;
}

halk çift Çıkar ( çift A , çift B )
{
geri dönmek A - B ;
}

halk çift Çarpmak ( çift A , çift B )
{
geri dönmek A * B ;
}

halk çift Bölmek ( çift A , çift B )
{
eğer ( B == 0 )
yeni DivideByZeroException oluştur ( ) ;
geri dönmek A / B ;
}
}

Tahmin edebileceğiniz gibi önceki kod, temel aritmetik uygulamaları gerçekleştirebilecek bir hesap makinesi uygulaması oluşturuyor.

Birim Testlerini Yazma

İşimiz bittiğinde “Hesap Makinesi” sınıfı için birim testlerini yazabiliriz. Bu durumda yapmamız gereken tek şey projenin “UnitTest” dosyasındaki testleri aşağıdaki gibi yazmak:

Sistemi kullanma ;

ad alanı CalcApp
{
genel sınıf Hesap Makinesi
{
halk çift Eklemek ( çift A , çift B )
{
geri dönmek A + B ;
}

halk çift Çıkar ( çift A , çift B )
{
geri dönmek A - B ;
}

halk çift Çarpmak ( çift A , çift B )
{
geri dönmek A * B ;
}

halk çift Bölmek ( çift A , çift B )
{
eğer ( B == 0 )
yeni DivideByZeroException oluştur ( ) ;
geri dönmek A / B ;
}
}
}

ad alanı CalcTest
{
[ Test Sınıfı ]
genel sınıf Hesap MakinesiTestleri
{
özel Hesap Makinesi ;

[ Test Başlatma ]
halk geçersiz Kurmak ( )
{
hesap makinesi = yeni Hesap Makinesi ( ) ;
}

[ Test metodu ]
halk geçersiz Add_TwoPositiveNumbers_ReturnsCorrectSum ( )
{
sonuç buydu = hesap makinesi. Eklemek ( 5 , 5 ) ;
İddia. Eşittir ( 10 , sonuç ) ;
}

[ Test metodu ]
halk geçersiz Subtract_TwoPositiveNumbers_ReturnsCorrectDifference ( )
{
sonuç buydu = hesap makinesi. Çıkar ( 10 , 5 ) ;
İddia. Eşittir ( 5 , sonuç ) ;
}

[ Test metodu ]
halk geçersiz Multiply_TwoPositiveNumbers_ReturnsCorrectProduct ( )
{
sonuç buydu = hesap makinesi. Çarpmak ( 5 , 5 ) ;
İddia. Eşittir ( 25 , sonuç ) ;
}

[ Test metodu ]
[ Beklenen İstisna ( bir çeşit ( DivideByZeroException ) ) ]
halk geçersiz Divide_DenominatorIsZero_ThrowsDivideByZeroException ( )
{
sonuç buydu = hesap makinesi. Bölmek ( 5 , 0 ) ;
}

[ Test metodu ]
halk geçersiz Divide_TwoPositiveNumbers_ReturnsCorrectQuotient ( )
{
sonuç buydu = hesap makinesi. Bölmek ( 10 , 5 ) ;
İddia. Eşittir ( 2 , sonuç ) ;
}
}
}

Çözüm

Bu, MSTest çerçevesini kullanarak C#'ta birim testinin temellerini kapsayan temel bir eğitimdir.