【问题标题】:Unit Testing XAML in Silverlight using MVVM/CSLA使用 MVVM/CSLA 在 Silverlight 中对 XAML 进行单元测试
【发布时间】:2012-04-13 13:50:01
【问题描述】:

在我们的主要 Silverlight 业务应用程序中,我们有许多基于用户角色可见和/或启用的控件(例如,管理员菜单链接仅在管理员角色中可见)。我们通过转换器控制这种可见性。

我刚刚开始编写单元测试,我希望能够根据不同的角色测试这些控件的可见性(如果我们在那里有错误,那就太糟糕了)。但是,由于我们使用的是 MVVM 模式,并且没有命名控件,所以我不知道该怎么做。有什么想法吗?

【问题讨论】:

    标签: silverlight unit-testing mvvm csla


    【解决方案1】:

    这正是 ViewModel 的用途。您应该能够轻松测试您的视图模型(在您的情况下,我想它们是否公开了正确的角色以供查看)。而且由于转换器只是一个普通的类,它们也应该被测试。

    就单元测试而言,您实际上只需要做两个任务:

    1. 测试视图模型是否公开正确的数据
    2. 测试转换器是否将角色转换为可见性正确

    单元测试到此结束。这些测试应该保证您的视图被提供适当的数据以按照您的计划呈现自己。现在是否这样做是不同的事情,但这超出了单元测试的范围。最终测试属于验收测试、质量保证以及自动化/脚本化 UI 测试,而且通常是人工验证。

    【讨论】:

    • 出色的答案;非常感谢。如果我有足够的代表点数,我会投票的:)
    【解决方案2】:

    我认为命名控件不会以任何方式破坏 MVVM。如果您从根本上反对命名它们,您可能可以使用 VisualTreeHelper 遍历控件树并找到您感兴趣的控件。

    您可以使用 Moq 模拟视图模型来模拟特定角色,并使用 Microsoft 的 Silverlight 测试框架来运行测试。

    【讨论】:

    • 感谢您的意见;与其说是反对为控件命名,不如说是我们必须为此重命名过多的控件(因为之前没有明显的需要命名它们,所以没有一个被命名)。
    猜你喜欢
    • 2013-08-10
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多