top of page

TDD - NUnit Kullanimi

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Feb 6, 2013
  • 3 min read

Visual Studio ortaminda gelistirmis oldugunuz yazilimlarin oncelikle test kodlarini yazmak ve derlemek istiyorsaniz NUnit Framework'unu kullanmaniz gerekiyor. Bu framework'u kullanirken normal bos bir projeyi acarak kodlarinizi gelistirebilirsiniz yada Visual Studio icerisinde Test template'ini kullanabilirsiniz. Oncelikle basit bir sekilde bos bir projede nasil olusturulacagini gosterdikten sonra Test Templati ile ilgili kucuk bir ornek yapiyor olacagim.

NUnit'te Ilk Uygulama

Yapacagimiz ilk uygulama blog'umda diger makalelerimde oldugu gibi en basit sekilde personel bilgileri uzerinde calisabilecegim bir uygulama yaziyor olacagim. Bunun icin oncelikle Visual Studio'da yeni bos bir proje olusturuyoruz. Other Project Types template'leri icerisinden Visual Studio Solutions secenegi altinda bulunan Blank Solution'i seciyor ve projenin ismini NUnitPersonelUygulamasi olarak duzenliyor ve projeyi olusturuyorum. Solution Explorer penceresinde projemize Add-New Project ile yeni bir ClassLibrary Ekliyoruz. Ismini PersonelBilgileri.Test olarak duzenliyorum. DIKKAT! test yapiyor olacagimiz icin herseyi tersten yapmaya alismamiz gerekiyor. Bu yuzden oncelik Test methodlarinin bulundugu test siniflarinin olacaktir. Icerisine test methodlarimizi yazabilecegimiz PersonelTest.Cs isminde bir class olusturuyorum. Gerekli NUnit.Framework'u Add Referances bolumunden ekliyorum. Ve PerosnelTest.Cs sinifima using NUnit.Framework seklinde gerekli satirimi ekliyorum.     Oncelikle yapmak istedigim test su olacak; Personelin TcKimlik, isim ve soyisminin bulundugu bir bilgiyi tek bir test methodu ile test etmek istiyorum. Bununla ilgili methodumu su sekilde yaziyorum.


        public void TestPersonelBilgisi()

        {

            Personel person = new Personel();

            personel.TcKimlik = "123456789";

            personel.Isim = "Sevdanur";

            personel.Soyisim = "GENC";

            string actual = personel.PersonelBilgisi();

            string expected = "123456789 Sevdanur GENC";

            Assert.AreEqual(expected, actual, "Farkli Bir Sonuc...");

}

Evet kafamdaki test kodlarini yazdim. Fakat ortada ne bir personel sinifi ne de ona ait tanimlamalar ve methodlar bulunmakta. Pekala  o zaman Solution Explorer penceresinde Add - New Project ile yeni bir Class Library projesi olusturalim ve ismini PersonelBilgileri olarak duzenleyelim.  Icerisine test kodlarimizda da ilk adimda basladigimiz gibi Personel.Cs adinda bir sinif olusturalim ve icerisine tckimlik, isim, soyisim tanimlamalarimizi yaptiktan sonra bir de PersonelBilgisi isminde bir method olusturalim. Referances olarak herhangi bir sey eklememiz gerek yok cunku .Test olarak olusturmus oldugumuz projeden bu bilgileri cagiriyor olacagiz. Bununla ilgili referance'larimizida eklemistik. Asagidaki gibi personel sinifimizi olusturuyoruz;

    public string TcKimlik { get; set; }

        public string Isim { get; set; }

        public string Soyisim { get; set; }

        public string PersonelBilgisi()

        {

            if (string.IsNullOrEmpty(TcKimlik))

                throw new MissingFieldException("TcKimlikNo Bos Gecilemez!");

            return string.Format("{0} {1} {2}", TcKimlik, Isim, Soyisim);

        }

Bakalim Yazmis oldugumuz test kodlari ve bunlarla ilgili uygulamamizin esas kodlari calisacak mi? NUnit'imizi calistirmadan once projemizi Build ediyoruz. Burada karsilasacaginiz diger bir ozellik ise NUnit programi sizin yapmis oldugunuz Build islemleri ile birlikte senkronizasyonlu bir sekilde calisiyor olmaktadir. NUnit(.Net) programimizi calisitiyoruz. Ve open project kismindan olusturmus oldugumuz projenin dll'ini seciyoruz. NUnitPersonelUygulamasi\PersonelBilgileri.Test\bin\Debug dizini altindan PersonelBilgileri.Test.dll 'i seciyoruz. Dll icerisinde yazmis oldugunuz tum method'lar bulunmaktadir. Run butonu ile calistirdigimizda Green Bar'i goruyoruz ve bu da herseyin yolunda oldugunu bize gosteriyor.

                    Egerki kodumu  string expected = "987654321 Sevdanur GENC"; seklinde degistirseydim Run butonuna tikladigimiz zaman Red Bar'i asagidaki gibi goruyor olacaktim. Ayni zamanda test sonucu olumsuz oldugu halde vermis oldugum hata mesajinida ekranda goruyorum.

PersonelTest.Cs Kaynak Kodlari;

using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; using PersonelBilgileri; namespace PersonelBilgileri.Test {

public class PersonelTest { private Personel personel;

public void init() { personel = new Personel(); }

public void TestPersonelBilgisi() { personel.TcKimlik = "123456789"; personel.Isim = "Sevdanur"; personel.Soyisim = "GENC"; string actual = personel.PersonelBilgisi(); string expected = "123456789 Sevdanur GENC"; Assert.AreEqual(expected, actual, "Farkli Bir Sonuc..."); } } }

Personel.Cs Kaynak Kodlari;

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PersonelBilgileri { public class Personel { public string TcKimlik { get; set; } public string Isim { get; set; } public string Soyisim { get; set; } public string PersonelBilgisi() { if (string.IsNullOrEmpty(TcKimlik)) throw new MissingFieldException("TcKimlikNo Bos Gecilemez!"); return string.Format("{0} {1} {2}", TcKimlik, Isim, Soyisim); } } } Keyifli Calismalar Dilerim.

Recent Posts

See All
Oracle Java Cloud Service Uygulamasi

Bir onceki Oracle Cloud Computing yazisinda bahsettigim gibi JDeveloper Oracle Cloud icin gelistirmis oldugu surumu olan Oracle JDeveloper 11g (11.1.1.6.0) ile kucuk bir uygulama gelistirip bunu oracl

 
 
 
Oracle Cloud Computing Hakkinda

Bulut bilisim konusundaki arastirmalarima devam ederken bu kez solugu Oracle Cloud Computing'de aldim. Bu makalem ve ilerleyen makalelerimde Trial versiyonu ile user tarafini pek yormayan bir yapidan

 
 
 
Nested Parallel Loops

Matrix Multiplication / Matrix Carpma islemlerini OpenMP araciligi ile paralel alanda nasil yapilabilecegini incelerken ayni zamanda for construct'larin nested parallel loops alaninda nasil calistigin

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page