Test güdümlü gelistirme(TDD - test driven development) icin MVC(model view controller) mi veya MVP(model view presenter) mi daha uyumludur?

Desktop, RIA(rich internet application) ve web projesi yazarken TDD'ye hangisi daha avantajlidir?

soruldu: 03 Haz '12, 10:48

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

değiştirildi: 10 Şub '13, 04:43

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Test güdümlü yazılım geliştirmeye MVP daha uygundur. Çünkü MVC'de View'a yüklenen "düşünebilme" yani içinde Model'e dair işler yapabilme yeteneği MVP'de tamamiyle ayrılmış, Presenter katmanına bırakılmıştır. MVP'de tüm mantığın bulunduğu yer ve Model'in View ile konuştuğu yer Presenter olduğundan ve View ile bağlantı bir interface üzerinden sağlandığından, Mock nesnesi olarak olarak sadece View interface parametresi geçerek Presenter üzerinden rahatlıkla TDD yapılabilir.

@Test
public void saveInfo(){
//Mock UserView objesi
   UserView userView =  mock(UserView.class);
UserPresenter userPresenter = new UserPresenter(userView);

//userView ile ilgili işler

//UserPresenter üzerindeki save() çağırılıyor. Ve assertion yapılıyor
assertTrue(userPresenter.save());

//userView üzerindeki verify() metodu ile assertion yapılıyor.
assertNotNull(userView.verifyInfo());

}

MVC'deki View katmanı MVP'dekine göre daha kalındır. O sebeple de MVC için üç katmana da birden unit test uygulanması önerilse de View için test yazmak zordur. MVP'de ise halihazırda hem View objesi instance'ına sahip olduğundan hem de Model'e erişimi dolayısıyla sadece Presenter için unit test yazmak ya da TDD uygulamak yukarıda da anlattığım mantık çerçevesinde daha kolay ve uygundur.

Edit: .Net kendi ASP.Net MVC yapısı için bir TDD yöntemi önermiş. Buradan incelenebilir.

permanent link

cevaplandı: 05 Haz '12, 08:09

mabulgu's gravatar image

mabulgu ♦
2.8k43040
cevap kabul oranı: 26%

değiştirildi: 05 Haz '12, 08:14

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×47
×5
×1

Soruldu: 03 Haz '12, 10:48

Görüntüleme: 1,086 kez

Son güncelleme: 10 Şub '13, 04:43

powered by BitNami OSQA