2016-01-12 49 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元素分开。这不仅会使测试计算变得容易,而且还会使该方法的其他部分可重复使用该方法。