【问题标题】:Importance of unit testing my Views when using the MVVM pattern?使用 MVVM 模式时对我的视图进行单元测试的重要性?
【发布时间】:2010-02-19 08:02:54
【问题描述】:

当使用MVVM pattern 构建您的 WPF 应用程序时,您应该从视图和代码隐藏文件中获取所有业务逻辑。正确执行此操作,View 本身将是一个简单的外观,其中包含与 ViewModel 类的数据绑定和命令绑定 - 这就是魔法发生的地方。

使用 MVVM 模式构建应用程序的一个关键好处是,您可以在 ViewModel 层正确测试代码,因此您可以对系统的基本部分进行单元测试。但是,视图中仍然存在潜在的错误。例如。 “点击这个按钮真的会触发这个带有预期参数的特定功能吗?”

对于视图中有关单元测试的功能,理想情况下会做些什么?假设您会做对,并且不花时间进行单元测试?或者我实际上也应该对此进行测试?这些应该如何创建? ..

【问题讨论】:

    标签: .net wpf unit-testing mvvm


    【解决方案1】:

    正如您所说,您使用 ViewModel 测试所有逻辑和行为,包括“可见性”计算等行为。

    一旦您完成了所有测试,那么测试视图就不再是一项任务了——您实际上是在测试事情是否“连接”正确。这种类型的测试对于手动测试人员来说很简单,因为它们本质上是在测试东西被点击时出现并“做事”(过度简化,但你明白了)。

    如果您想自动化视图/交互式测试,请查看Project White,它可以让您通过很少的工作自动化您的应用程序。让您的项目与 White 完美配合的一个优势是,您还可以让辅助技术更易于访问。

    【讨论】:

    • 谢谢。正是我的想法.. 没有太多要测试的东西了。但是仍然 - 可能存在错误,所以我想知道省略视图测试是否可以接受。从你看来,这听起来可以接受,我同意..!
    【解决方案2】:

    对于 WPF gui 测试,请尝试 IcuTest

    您可以轻松创建显示窗口和单击按钮的单元测试。

    【讨论】:

    • 谢谢小费。如果您对我在正确使用 MVVM 时是否真的需要测试我的 GUI 提出您的意见,会给您 +1 - 这就是问题的真正意义所在。
    • 如果你有一个VM层。是的。如果你测试你的视图。当然。有些东西不能被 VM 或 M 测试捕获。例如,绑定是否有效,或者单击按钮是否正确,等等...
    【解决方案3】:

    MVVM 如此重要的原因之一是回归测试 UI 是一个难以解决且成本高昂的问题。绝大多数 UI 测试条件都采用“当我执行此操作时,我应该在屏幕上看到它”的形式,并且自动化第二部分并非易事。

    从测试的角度来看,MVVM 为您提供的是视图模型的单元测试主体本质上是作为合同运行的。它不是正式的合同,但它的功能就像一个合同。如果你已经正确地测试了你的视图,并且你的视图模型测试足够详细,你就不需要在每次改变你的视图模型时重新测试你的视图;只要视图模型通过了它的测试,它的行为(就视图而言)就不应该改变。

    但为了让它发挥作用,您必须对视图模型测试充满信心。而且它不会 100% 有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-10
      • 2011-01-18
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多