我应该在 MVP(或 VM)中对我的视图进行单元测试,或者如何将视图中的代码保持在最低限度?

2024-04-13

我在应用程序中使用模型-视图-表示模型,我想知道是否需要为视图创建单元测试。 (我使用的是.net 2.0 WinForms)

现在,通常视图应该非常简单,以至于没有必要为其创建单元测试。至少这是我从视图与表示模型(PM)分离的目标中得到的想法。在大多数情况下,我的代码也是如此。

然而,在某些情况下,我似乎无法避免视图中的某些逻辑。这些通常与拖放处理或高级 UI 效果有关(想象一下您正在拖动网格行,数据网格显示占位符,其他行实时移动以指示您可以将其放置在那里)。

另一件事是,有时在我看来,使用控件本身比与 PM 一起工作并让数据绑定将更改反映回控件更有效。例如,我有一个数据网格,假设我将一行从索引 5 移动到 3。我可以调用 PM 上的方法,并让网格通过数据绑定反映更改。或者我可以直接在控制器上完成。不同之处在于,前一种方法强制控件从头开始重建自身,而后者则不然。

你有什么经历?


如果您的视图中有一些专门的逻辑(例如您提到的拖放),您仍然可以将其移至单独的类 - 服务中,然后可以对其进行单独的单元测试。不过,有时您需要重构(或概括)代码才能实现此目的。但我们的想法是使视图代码尽可能精简,以便所有其他代码都是可单元测试的。

如果你真的想用测试覆盖视图,你仍然可以使用一些 WinForms GUI 测试框架,比如 White(尽管这样的测试比简单地用模拟编写单元测试要困难得多,成本也高得多)。

这里有一个关于 WinForms、MVP 和单元测试的好资料:演示者优先:组织复杂的 GUI 应用程序以进行测试驱动开发 https://mcsp.wartburg.edu//zelle/cs270/handouts/PresenterFirstAgile2006.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在 MVP(或 VM)中对我的视图进行单元测试,或者如何将视图中的代码保持在最低限度? 的相关文章

随机推荐