2012-01-22 38 views
0

我是新來Visual Studio單元測試框架和單元測試。如何對這個類進行單元測試?

class Request 
{  
    private Dictionary<string, List<int>> processedText = new Dictionary<string, List<int>>(); 
    Public bool Method1(string input) 
    { 
     //intialize processedText to some values based on input. 

    } 
    public int Method2() 
    { 
     //use the processedText. 
    } 
} 

現在我不知道如何單元測試這段代碼?

我的問題是一個良好的編程習慣有一個全局變量,初始化它並在其他方法中使用?

我的代碼單元是否可以測試?任何有助於磨練我的單元測試技能的鏈接都會非常有用。我經歷了一些教程,但從未遇到這種情況。

+0

只是一個說明,這是一個實例變量,而不是一個全局變量(是的,你可以在一個方法中初始化它,並在另一個方法中使用它)。 –

回答

0
  • 擁有一個類級別的私有變量並不會阻止你做 單元測試。但有一個靜態變量會。
  • 我看不到任何 方法的返回值或輸出參數。那麼你會用什麼 驗證結果呢?
  • 否則,確保代碼 是獨立的,並在依賴於對象 的情況下使用適當的模擬對象,那麼它應該是alrite。
+0

一個方法返回bool和另一個int。 – Sandeep

+0

好的。與您的看法相反,自動化單元測試非常簡單。事實上,你可以自己編寫一些類並實現框架。但是VSTS和nUnit等,已經爲你簡化了這個過程。它是提供參數並檢查結果的另一部分代碼。你需要確保你在這裏包含所有的測試用例作爲單元測試。看看我通過谷歌這個鏈接,它解釋了nUnit以獲得理解http://www.codeproject。COM /用品/ 5171 /先進單位 - 測試 - 部分-IV-燈具 - 設置 - Teardo。 – Muthu

0

若要使類可測試你必須設置三個基本部分組成:

  • 安排:這是你設置測試的情況下,即,將被傳遞給你的方法輸入值,任何類初始化代碼(可能通過嘲諷依賴關係等)
  • 法:這是您執行單元測試的地方,您已經設置了值的排列方式,並且您的結果是得到
  • 斷言:這是驗證結果的步驟。換句話說,你的代碼是否通過了測試?

您發佈的代碼是而不是單元可測試,因爲沒有辦法驗證結果。如果您需要驗證的結果依賴於不同的數據源,如數據庫或文件,那麼您正在編寫一個集成測試

下面是可以進行單元測試的單元測試和代碼示例。原諒瘸子例如:

[TestClass] 
public class CalculatorTest 
{ 
    [TestMethod] 
    public void When_Two_Numbers_Are_Passed_To_The_Add_Method_The_Result_Should_Be_The_Addition_Of_The_Two_Numbers() 
    { 
     // Arrange 
     double x = 1.0; 
     double y = 2.0; 
     double expectedResult = 3.0; 
     ICalculator calculator = new Calculator(); 

     // Act 
     double actualResult = calculator.Add(x, y); 

     // Assert 
     Assert.AreEqual(expectedResult, actualResult); 
    } 
} 

這裏,將通過測試的類:

public class Calculator : ICalculator 
{ 
    public double Add(double x, double y) 
    { 
     return x + y; 
    } 
} 

public interface ICalculator 
{ 
    double Add(x, y); 
} 

現在,「單元測試」你指的是TDD?

+0

看起來您在發佈我的答案之前編輯了您的問題。您發佈的原始代碼中的兩種方法都返回了「void」,這就是爲什麼我的結論是您的代碼不是單元測試的,除非您正在編寫集成測試。我希望我提供的例子仍然有幫助。 –