2014-07-03 115 views
0

我有以下方法。我怎樣才能爲這個函數編寫單元測試以確保機器被添加到修復列表中?如何單元測試if else語句

public void AddMachineToRepairsList() 
{ 
    Console.WriteLine("Would you like to add this Machine to the repairs list?"); 

    var addToRepairs = Console.ReadLine().ToLower(); 
    if (addToRepairs == "yes") 
    { 
     int cost = 0; 
     int hoursWorked = 0; 

     var machine = new Repair(cost, hoursWorked); 
     Repairs.Add(machine); 
     Console.WriteLine("Machine successfully added!"); 
    } 
    else 
    { 
     Console.WriteLine("Please enter machine information again"); 
     this.Run(); 
    }  
} 
+0

你有一個失蹤'「'在第一行,這是我爲您解決。 – gunr2171

+1

1)單元測試框架您使用?2)通常單元測試是在非void方法上完成的,以確定函數返回/錯誤。您究竟在這裏尋找什麼? – JNYRanger

+1

您可以抽象函數的主體(Console.ReadLine()之後的所有內容)。 ToLower())轉換爲單獨的可測試方法 - 然後測試(您可能對Console是否正確輸入/輸出輸出不感興趣) – Michael

回答

0

您將需要通過addToRepairs作爲參數傳遞給方法,並呼籲像

Console.WriteLine("Would you like to add this Machine to the repairs list?"); 
    var addToRepairs = Console.ReadLine().ToLower(); 
    while(AddMachineToRepairsList(addToRepairs)==false) 
{ 
Console.WriteLine("Please enter machine information again"); 
    this.Run(); 
} 

定義是

public bool AddMachineToRepairsList(string option) 
{ 
    string addToRepairs = ""; 
    if (addToRepairs == "yes") 
    { 
     int cost = 0; 
     int hoursWorked = 0; 

     var machine = new Repair(cost, hoursWorked); 
     Repairs.Add(machine); 
     Console.WriteLine("Machine successfully added!"); 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

} 

現在一個單元測試將與值「是」和一個用「不」。你 可以編寫單元測試,並斷言基於期權的返回值是真/假傳遞

+0

執行甚至不會到達AddMachineToRepairsList(字符串選項)方法。它只是跳到this.Run(); – Ted