Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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
C# MVVM单元测试_C#_Wpf_Unit Testing_Mvvm - Fatal编程技术网

C# MVVM单元测试

C# MVVM单元测试,c#,wpf,unit-testing,mvvm,C#,Wpf,Unit Testing,Mvvm,我使用MVVM在WPF中开发了一个应用程序,这是因为分离和测试能力的额外好处。然而,我试图编写一些单元测试作为本文的一部分,但对测试内容感到困惑。我知道如何编写单元测试,但我不确定应该在视图模型中测试什么,视图模型由数据绑定的属性和某些逻辑的方法组成 此外,我的大多数视图模型方法都是私有的,因为它们只需要从视图模型内部访问,所以它们不能像公共方法那样简单地通过单元测试进行测试。这导致能够测试很少的视图模型,这与MVVM在测试和质量POV方面的假定值相反,这是不利的,因为我必须依靠手动测试来证明代

我使用MVVM在WPF中开发了一个应用程序,这是因为分离和测试能力的额外好处。然而,我试图编写一些单元测试作为本文的一部分,但对测试内容感到困惑。我知道如何编写单元测试,但我不确定应该在视图模型中测试什么,视图模型由数据绑定的属性和某些逻辑的方法组成

此外,我的大多数视图模型方法都是私有的,因为它们只需要从视图模型内部访问,所以它们不能像公共方法那样简单地通过单元测试进行测试。这导致能够测试很少的视图模型,这与MVVM在测试和质量POV方面的假定值相反,这是不利的,因为我必须依靠手动测试来证明代码的功能


我可能是错的,而且我还不熟悉使用MVVM,但是如果您能提供帮助,我们将不胜感激

您可以测试用户可以在UI上执行的相同操作

根据定义,这些东西将是公开的,因为视图将约束它们


假设您有一个Widgets集合和一个AddWidgetCommand。您可以测试执行该命令是否会将小部件添加到集合中。

当我编写WPF应用程序时,我将测试重点放在模型上

我通过调用命令和设置属性来测试视图模型,就像用户使用用户界面所做的那样。对于简单的视图模型,只需一对一地包装一个模型或用4行代码调用一个服务,我不编写任何初始测试

当我在运行应用程序时发现一些不符合预期的情况时,我会返回并为特定用例编写测试。最初的“bug”通常显示了在特定的视图模型中很难实现什么,并且是编写更多测试并以更测试驱动的方式继续开发的良好起点