2012-09-07 49 views
3

我是新來asp,C#,nunit。我正在努力爲一個簡單的網絡表單寫作(做我的家庭作業/任務)nunit測試用例,它沒有任何業務邏輯。NUnit測試用於WebForm

Web表單中有4個文本框(姓名,EMAILADDRESS,密碼,電話號碼) ,一個電臺列表,下拉列表(性別)。表單只是驗證數據,並將其他頁面中的數據顯示爲輸出文本(標籤)。 驗證只是電子郵件,電話的regEx驗證。名稱和密碼的長度驗證。 必需的性別字段驗證。

請建議我該怎麼寫NUnit測試案例針對此網絡表單

例如,如果有計算階乘的方法,我首先調用方法與代碼給出一個參數(例如:4) 。它返回我4!變成一個變量'result'(結果現在有24個)。 然後我將調用AssertEquals(24,結果)

因此,萬一是web表單,它需要用戶輸入。輸入未在代碼中給出。 會是怎樣的assertEquals

感謝的參數,

+0

如果你想「單元測試」表示邏輯,你需要單獨您的問題,像MVP的模式將做到這一點 –

+0

u能請詳細 – crazyTechie

回答

0

最終你可以做什麼(根據jflood.net的評論)是分開你的顧慮。所以目前你有兩個主要問題(你可能甚至可能進一步分解它,但我們也應該避免過度工程) - 向用戶呈現數據並驗證用戶的輸入。

您的ASP.NET WebForm代碼處理關注點#1。爲了分離驗證問題,您應該創建一個處理驗證邏輯的新驗證類。像

public class Validator 
{ 
    public bool ValidateEmail(string email) 
    { 
      bool valid = false; 
      //Run RegEx validation and set the valid flag 
      return valid; 
    } 
} 

東西現在在你的頁面負載,可以utiliize這個新類

protected void Page_Load(object sender, EventArgs e) 
{ 
     Validator validator = new Validator(); 
     string email = Request.Form["EmailInput"]; 
     bool isEmailValid = validator.ValidateEmail(email); 

     if (isEmailValid) 
      Response.Write("Email is valid"); 
} 

注意這多少有些僞代碼,因爲這是家庭作業,我不想鍵入了全解。

現在您已將驗證關注分爲自己的類。這使得單元測試更容易理解和更輕鬆。

您現在要編寫Validator類的單元測試,特別是在這種情況下,爲ValidateEmail。

下面是一個例子

[Test] 
    public void ValidateGoodEmail() 
    { 
    Validator validator = new Validator(); 
    bool shouldBeTrue = validator.ValidateEmail("[email protected]"); 

    Assert.AreEqual(true, shouldBeTrue); 
    } 

    [Test] 
    public void ValidateBadEmail() 
    { 
    Validator validator = new Validator(); 
    bool shouldBeFalse = validator.ValidateEmail("[email protected]"); 

    Assert.AreEqual(false, shouldBeFalse); 
    } 

記住在單元測試你只是測試不同的邏輯流。你不必測試任何輸入,所以我在這裏測試了一個錯誤的驗證與一個給定的錯誤的電子郵件地址和一個真正的驗證與一個很好的電子郵件地址。

希望這有助於

+0

http://www.unit-testing.net/CurrentArticle/How-To-Use-Model-View-Presenter-With-AspNet-WebForms.html – crazyTechie

0

你被允許使用的web測試框架像SeleniumWatiN?如果是這樣,您可以使用它們在瀏覽器中打開網站,在文本框中輸入值並查找頁面上失敗文本的成功。

+0

我是有點熟悉的硒模擬請求,輸入用戶輸入。但我正在考慮如何編寫測試用例而不使用硒。並且我不允許使用硒或watiN – crazyTechie