如何对 WPF 视图文件示例 SomeView.Xaml 进行单元测试

Vee*_*era 1 testing xaml

如何以 mvvm 模式对 WPF 视图文件(如 Sample.xaml 和 sample.xaml.cs 文件)进行单元测试

Lan*_*nce 5

在 WPF 中,您不需要对 xaml 进行单元测试。Xaml 只是绑定到视图模型的 UI。毕竟你真正需要测试的是视图模型,应用程序的状态应该在视图模型中而不是在 xaml 中。

例如,假设您想测试某个按钮在某个逻辑之后是否可见。您需要做的是在视图模型(即 IsButtonShown)中创建一个布尔值属性,并将其绑定到具有布尔值到可见性转换器的按钮的可见性。

<Button Content="Click Me!" Visibility="{Binding IsButtonShown, Converter={StaticResource booleanToVisibility}}" />
Run Code Online (Sandbox Code Playgroud)

通过绑定,您现在可以从视图模型中查看 UI 的每个属性的状态,这样您就无需为 xaml 创建单元测试。

现在在您的单元测试中,您可以执行以下操作:

   [TestMethod]
    public void TestMethod1()
    {
       viewModel.InsideThisMethodWeSetIsButtonShownToFalse();
       Assert.IsTrue(!viewModel.IsButtonShown);
    }
Run Code Online (Sandbox Code Playgroud)

  • 那么,如果不对视图进行单元测试,如何进行测试驱动呢?在某些时候,代码需要进入 xaml 或后面的代码。驱动它的测试在哪里? (2认同)
  • 我完全忘记了我什至问过这个问题。两年过去了,在 MVVM 方面获得了相当多的经验,我现在完全明白了 ViewModel 的单元测试本质上是测试视图,当然前提是视图是完全声明性的并且没有业务逻辑……但这应该是如果按照规定遵循 MVVM 的情况。 (2认同)