2015-09-13 27 views
3

我有一個asp.net應用程序,您可以使用fileupload控件上傳xml文件,並將其解析爲對象列表並以網格視圖顯示非常簡單的東西。但我被要求寫一些單元測試。林新的tdd,並希望如何寫一些單元測試sum建議。如何進行單元測試ASP.NET Web Forms

這是我到目前爲止。我硬編碼的XML文件。有沒有一種方法進行單元測試的文件上傳

[TestClass] 
public class UnitTest1 
{ 

    string source = @"C:\Users\\Desktop\Web Application\ Web Application.Tests\LunchTest.xml"; 


    [TestMethod] 
    public void ParseXmlTest() 
    { 
     XmlUlitilyClass x = new XmlUlitilyClass(); 

     Assert.AreEqual(x.ParseXml(source).Count, 4); 
     Assert.AreEqual(x.ParseXml(source)[3].Name,"Roast of the day"); 
     Assert.AreEqual(x.ParseXml(source)[3].DesertIncluded, true); 
     Assert.AreEqual(x.ParseXml(source)[0].Calories, 350); 
     Assert.AreEqual(x.ParseXml(source)[1].Vegetarian, false);  
    } 
} 
+1

提取物'x.ParseXml(源)單元測試'局部變量,解析5倍太開銷:) – Backs

+0

僅供參考,您的問題是關於單元測試,而不是TDD。 TDD首先編寫測試 - 就你而言,你已經編寫了你的​​應用程序。 –

回答

2

有沒有辦法進行單元測試的文件上傳

好吧,你絕對不能單元測試的事件處理程序和其他出綁定的東西在ASP.NET像你的情況下FileUpload控制。此外,您不需要爲fileupload控件編寫單元測試,而只需檢查主邏輯的postivie/negative情況。是的,你可以很好地將xml文件名進行硬編碼。根據你的文章,我看到的是,這裏的主要業務邏輯是:

  1. 單元測試文件處理邏輯。這是測試如果輸入了錯誤的文件(或)不存在的文件。您可以爲+ ve/-ve個案創建單獨的單元測試方法,您可以在其中提供單獨的硬編碼文件輸入。

  2. XML解析邏輯。

你可以考慮重構你的代碼,並把這個兩個邏輯在不同的方法和單元測試的方法來代替。

根據您的意見,如果您提供了錯誤的文件名,那麼肯定運行時會拋出一個名爲FileNotFoundException的異常,您可以使用ExpectedException屬性在您的測試方法中捕獲它。例如:

string source = @"C:\Users\\Desktop\Web Application\ Web Application.Tests\LunchTest.xml"; 

[TestMethod] 
[ExpectedException(typeof(FileNotFoundException), 
    "Provided File doesn't exists.")] 
public void TestFileNotExists() 
{ 
    //your code goes here 
} 

瞭解更多關於MSDN A Unit Testing Walkthrough with Visual Studio Team Test

+0

好的謝謝。任何建議如何單元測試如果一個錯誤的文件或不存在的文件inputed.new單元測試抱歉 – TomGill

+0

@TomGill,請參閱編輯回答是否有幫助。 – Rahul

+0

謝謝你現在看看 – TomGill