2016-04-14 59 views
-1

我不知道如何在C#程序中測試我的calc,因爲我的方法與(對象發件人,EventArgs e)參數和全局變量完全一致。如何測試這種方法看起來像?測試無效方法對象和事件參數

這只是一個代碼

private void buttonEq_Click(object sender, EventArgs e) 
{ 

    number2 = int.Parse(textBox1.Text); 

    if (operation == "plus") 
    { 
     finRes = number1 + number2; 
    } 
    else if (operation == "minus") 
    { 
     finRes = number1 - number2; 
    } 
    else if (operation == "multiple") 
    { 
     finRes = number1 * number2; 
    } 
    else if (operation == "divide") 
    { 
     finRes = number1/number2; 
    } 
    else if (operation == "exp") 
    { 
     finRes = Math.Pow(number1, number2); 
    } 
    else if (operation == "fac") 
    { 
     int result = number1; 

     for (int i = (number1)-1; i > 0 ; i--) 
     { 
      result = result * i;  
      finRes = result; 
     } 
    } 
    else if (operation == "sqrt") 
    { 
     finRes = Math.Sqrt(number1); 
    } 

    textBox2.Text = finRes.ToString(); 
    operation = ""; 
} 
+0

結帳mvvm模式。你不能編寫單元測試來訪問textBox2.Text。但是,如果你將它綁定到viewmodel中的一個屬性,那麼你肯定可以爲它編寫單元測試。 – CarbineCoder

+0

大部分代碼實際上並不需要該接口。把它分成兩部分呢? UI代碼可以處理從UI獲取數據,然後另一個可以處理實際的工作。這可以讓你在實際工作部分進行各種測試,而無需設置所有的文本框內容。 – MBentley

+0

摘要你將代碼處理成它自己的類並進行單元測試。然後在表單類中使用該類及其方法。 – Brody

回答

2

你需要的,如果你想計算邏輯檢驗的重構你的代碼的一部分。用更簡單的詞語表示將所有這些if/else分解爲單獨的方法。現在你可以測試Calculate方法,或者只是從事件處理程序調用它,不管。

void Calculate(int num1, int num2) 
{ 
    // put all your if/else logic here 
} 

void buttonEq_Click(object sender, EventArgs e) 
{ 
    Calculate(number1, number2); 
}