Veysel Uğur KIZMAZ

Asp.Net MVC Unit Test

29.04.2012Okunma Sayısı: 7135Kategori: ASP.NET MVC

 Daha önceki makalelerimizde C#’ta Unit Test kavramını incelemiştik. Şimdi ise Asp.Net MVC’de Unit Test’lerin nasıl kullanıldığını inceleyelim.

Unit testlerle ilgili ön bilgi için bu linkteki makalemizi inceleyebilirsiniz.
Bu konuyu bir örnek ile inceleyelim.
Yeni bir Asp.Net MVC projesi oluşturalım ve yeni bir Controller ekleyelim.
MakaleController’ı oluşturduktan sonra içine MakaleGoster isimli bir Action ekleyelim.
    public class MakaleController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
 
        public ActionResult MakaleGoster(int makaleId)
        {
            return View("Makale");
        }
 
    }
 
Şimdi MakaleGoster methodumuzun testi için MakaleGoster’e sağ tıklayıp önce Add View ile bir View ekleyelim, sonra Create Unit Tests diyelim.
Eğer bir test projemiz varsa o proje üzerinden devam edebiliriz. Yoksa yeni bir test projesi oluşturma ekranından devam edebiliriz.
Create dediğimizde test projemizi ve test methodumuzu oluşturdu. Test methodunun ilk oluştuğu anki kodları aşağıdaki gibi olacaktır (port farklı olabilir)
        [TestMethod()]
        [HostType("ASP.NET")]
        [AspNetDevelopmentServerHost("c:\\documents and settings\\ugur\\belgelerim\\visual studio 2010\\Projects\\Mvc2_Makale\\Mvc2_Makale", "/")]
        [UrlToTest("http://localhost:3861/")]
        public void MakaleGosterTest()
        {
            MakaleController target = new MakaleController();
            int makaleId = 2;
            ActionResult expected = null;
            ActionResult actual;
            actual = target.MakaleGoster(makaleId);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
 
target.MakaleGoster() methodumuz bir ActionResult döndürecektir. Bu ActionResult’ın değerinin ne olacağına bir göz atalım.
Kodumuzu aşağıdaki gibi düzenleyelim.
        [TestMethod()]
        public void MakaleGosterTest()
        {
            MakaleController target = new MakaleController(); // TODO: Initialize to an appropriate value
            int makaleId = 0; // TODO: Initialize to an appropriate value
            ActionResult expected = null; // TODO: Initialize to an appropriate value
            var  actual = target.MakaleGoster(makaleId);
            Assert.AreEqual(expected, actual);
        }
 
Öncesinde, bizim MakaleGoster View’ımıza “Makale” string  ifadesini gönderdiğimizi hatırlayalım ve
actual = target.MakaleGoster(makaleId);
satırına breakpoint koyup debug modda inceleyelim.
Kodumuzu çalıştırdığımızda aşağıdaki örnekteki şekilde gelen veriyi inceleyebiliriz.
ViewName’in Makale olduğunu görebilmekteyiz. Bu şekilde oluşturduğumuz ve ViewData ile göndermek istediğimiz verilerin View’a ulaşıp ulaşmayacağını Unit Testler ile tespit edebiliriz.
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com