【问题标题】:Unit Testing against Windows Form针对 Windows 窗体的单元测试
【发布时间】:2016-04-17 15:47:23
【问题描述】:

我是单元测试的新手,正在使用 Visual Studio,我有一个名为 mm_x 的公共变量,它是在表单中的函数中计算的(不是在类中),当我尝试进行测试时我找不到从 UnitTest 方法中引用它的方法。测试类中的其他变量很容易,但我找不到最好的方法。

我应该:

将变量计算的所有逻辑放在一个业务类的表单中,然后对业务类进行单元测试? 将表单逻辑保留在表单中,并以某种方式对表单进行单元测试?

作为参考,这是包含我要测试的变量的表单中的方法: (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);
            }
         }

谢谢,

【问题讨论】:

  • 最好的办法是将所有的计算逻辑放在一个单独的类中,只测试计算类。在单元测试中实例化 UI 组件(如 WinForm)绝不是理想的。

标签: c# winforms unit-testing


【解决方案1】:

我建议研究实现 Windows 窗体应用程序的 MVC(模型、视图、控制器)方法。它有助于保持 UI 和代码分离。

我个人没有使用过它,因为我只使用过使用 MVVM(模型、视图、视图模型)的 WPF 应用程序,但是这两个模型背后的原因是相似的,因为它们旨在分离代码和 UI。

在此处查看有关实施 MVC 的更多信息:How would you implement MVC in a Windows Forms application?

【讨论】:

    【解决方案2】:

    正如您在问题中提到的 - 您应该将所有业务逻辑与 UI 元素分开。这不仅可以轻松测试您的计算,还可以使程序的其他部分可重用该方法。

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多