2016-01-12 81 views
0

我是新來的單元測試和使用Visual Studio,我有一個名爲mm_x的窗體中的公共變量,它是在函數中(不在類中)計算的,當我嘗試做一個測試我找不到從UnitTest方法引用它的方法。很容易測試類上的其他變量,但是這個特定的變量我找不到最好的方法來完成它。針對Windows窗體的單元測試

我應該:

把所有的邏輯適用於企業類形式的變量計算,然後單元測試公務艙? 保持窗體邏輯的形式,並以某種方式單元測試的形式?

作爲參考,下面是其中包含我想測試變量的形式方法: (poi_navegacion_individual和MR 2班我用,但我感興趣的是有試mm_X結果)

private void Leer_NDI_tracker(object sender, EventArgs e) 
     { 

      if (MR != null) 
      { 
       mm_X = poi_navegacion_individual.POR_x * Convert.ToDecimal(MR.MR0) + poi_navegacion_individual.POR_y * Convert.ToDecimal(MR.MR1) + poi_navegacion_individual.POR_z * Convert.ToDecimal(MR.MR2) + Convert.ToDecimal(MR.MR9); 
      } 
     } 

謝謝,

+4

最好的方法是把所有的計算邏輯在一個單獨的類和測試只是計算類。在單元測試中實例化一個UI組件(比如WinForm)永遠不是理想的選擇。 –

回答

1

我建議尋找實現Windows窗體應用程序的MVC(模型,視圖,控制器)方法。它有助於保持用戶界面和代碼分離。

我個人並沒有使用它,因爲我只使用MVVM應用程序(其中使用MVVM(Model,View,ViewModel)),但兩種模型背後的推理類似,它們旨在分離代碼和UI。

看看這裏關於實施MVC的更多信息:How would you implement MVC in a Windows Forms application?

1

正如你在你的問題中提到的 - 你應該保持所有的業務邏輯與UI元素分開。這不僅會使測試計算變得容易,而且還會使該方法的其他部分可重複使用該方法。