当视图在MVVM中不可单元测试时,为什么单元测试有用?

时间:2010-05-21 00:08:19

标签: mvvm

为什么当视图在MVVM中不可单元测试时,单元测试是否有用?

在MVVM中,我们有模型,视图模型和视图。声称的优点是MVVM可以使模型和视图=模型单元可测试。但所有三方都属于同一个申请。如果视图不是单元可测试的,为什么要测试另外两个?是否对其他两个进行单元测试并留下未经测试的一个可以提高质量?

从视图中删除所有代码隐藏对我来说听起来很奇怪。代码隐藏只能处理纯UI操作吗?

4 个答案:

答案 0 :(得分:0)

  1. MVVM中的视图是愚蠢的,你向他们提供他们向用户显示的数据,完成。
  2. 操作很安静,您可以在单元测试中测试。
  3. 您可以测试路径使用的视图

答案 1 :(得分:0)

部分想法当然是你的观点应该是如此微不足道,以至于它“不需要”进行单元测试。但是,可以对单元测试GUI进行单元测试,请参阅http://www.c2.com/cgi/wiki?TestFirstUserInterfacesPrinciples

答案 2 :(得分:0)

一旦采用MVVM,您会发现您的视图变得非常轻,并且很多逻辑都会进入视图模型。 “纯UI操作”更像是一种想象中的威胁,而不是真实的威胁。

在视图中但不是单元可测试的那些内容是动画和绑定。使用声明形式(即XAML)有助于减少系统的整体不稳定性。一旦这些工作,他们继续工作。此外,采用应用程序逻辑并将其与UI“糖”分开可以确保您不断变化的应用程序逻辑不会破坏UI逻辑的稳定性。

此外,如果你在代码中有一个非常复杂的动画,那么就不会阻止你以单元可测试的方式抽象它。

答案 3 :(得分:0)

在视图中我们可以犯很多错误:1。触发器实际上是程序逻辑。 2.如果我们将绑定路径设置错误,我们将不会收到任何运行时错误,但视图将不会显示正确的数据。 3.如果我们将命令绑定到视图模型中的错误处理程序,则程序将无法按预期工作。所有这些都需要进行测试。但是如果我们只测试视图模型,程序仍然没有经过测试。那么有什么好处呢?