Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何对App.OnStartup进行单元测试_Wpf_Unit Testing_Mvvm - Fatal编程技术网

Wpf 如何对App.OnStartup进行单元测试

Wpf 如何对App.OnStartup进行单元测试,wpf,unit-testing,mvvm,Wpf,Unit Testing,Mvvm,我正在使用MVVM编写一个WPF应用程序,因此我将覆盖应用程序中的OnStartup以设置视图的ViewModel。很快,在工作中,“完成”的定义将包括100%的代码覆盖率,所以我现在在家里努力养成自己项目的习惯。我不知道如何测试此功能: public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); V

我正在使用MVVM编写一个WPF应用程序,因此我将覆盖应用程序中的OnStartup以设置视图的ViewModel。很快,在工作中,“完成”的定义将包括100%的代码覆盖率,所以我现在在家里努力养成自己项目的习惯。我不知道如何测试此功能:

public partial class App : Application
{
  protected override void OnStartup(StartupEventArgs e)
  {
    base.OnStartup(e);

    ViewModel.MainViewModel vm = new ViewModel.MainViewModel();
    View.MainView v = new View.MainView();
    v.DataContext = vm;
    v.Show();
  }
}

尼克,我建议你把这些反馈给工作。你基本上找到了一个完美的例子,说明为什么100%的覆盖率通常不是大多数人遵守的标准。 我个人建议我工作的公司更加务实。有一种情况是,覆盖率越高,回报率就越小。当然,对于UI应用程序,您可以通过问自己,这将实际测试什么来节省大量时间

您的代码将显示一个带有视图模型的应用程序视图窗口。您可以使用诸如或之类的库来提供确认这一点的简单方法,但是您真正要做的就是确认windows已经完成了它的工作。稍后,您可能会验证单击按钮会在文本框中显示一个值,这具有更多的值,但也可以通过调用ViewModel命令并随后选中视图模型状态来轻松模拟


这是您的选择,我建议您尝试这两种方法,但现在我将视图名称空间排除在所有覆盖范围之外

您应该避免在代码中编写此类函数。在编写测试用例之前。你应该学习棱镜。这对MVVM非常有效。这很有趣。我从一个在微软工作的人那里看到的视频中学会了这样做。他可能想展示一些与WPF框架无关的东西。因为对于每个POC,您不会选择MVVM、Prism等,因为这会使您的演示更加复杂。如果您遵循prism、MVVM和WPF,那么您很少会陷入这样的代码场景。