Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
.net 使用MVVM模式时单元测试我的视图的重要性?_.net_Wpf_Unit Testing_Mvvm - Fatal编程技术网

.net 使用MVVM模式时单元测试我的视图的重要性?

.net 使用MVVM模式时单元测试我的视图的重要性?,.net,wpf,unit-testing,mvvm,.net,Wpf,Unit Testing,Mvvm,当使用来构造WPF应用程序时,您应该将所有业务逻辑从视图中移除,并将代码隐藏到文件中。如果做得好,视图本身将是一个简单的外观,具有到ViewModel类的数据绑定和命令绑定,这就是神奇之处 使用MVVM模式构建应用程序的一个关键好处是,可以在ViewModel层中正确测试代码,因此可以对系统的基本部分进行单元测试。然而,视图中仍然存在潜在的bug。例如,“点击此按钮是否实际使用预期参数触发此特定功能?”,等等 理想情况下,对于单元测试视图中的功能,人们会怎么做?假设你做对了,不花时间进行单元测试

当使用来构造WPF应用程序时,您应该将所有业务逻辑从视图中移除,并将代码隐藏到文件中。如果做得好,视图本身将是一个简单的外观,具有到ViewModel类的数据绑定和命令绑定,这就是神奇之处

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


理想情况下,对于单元测试视图中的功能,人们会怎么做?假设你做对了,不花时间进行单元测试?或者我也应该为此进行测试?这些应该如何创建

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

一旦你测试了所有这些,那么测试视图就不再是一项任务了——你基本上是在测试事物是否“连接”正确。对于手动测试人员来说,这种类型的测试很简单,因为他们基本上是在测试单击时显示的内容和“执行”的内容(过于简化,但你明白了)

如果您想自动化视图/交互式测试,那么请看一看,这将使您只需很少的工作即可自动化应用程序。使您的项目与White很好地协同工作的一个优点是,您还可以使其更易于使用辅助技术。

对于WPF gui测试,请尝试


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

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

从测试的角度来看,MVVM带给您的是视图模型的单元测试主体实质上是一个契约。从形式上讲,这不是一份合同,但它的功能类似于一份合同。如果您已经正确地测试了视图,并且视图模型测试足够详细,那么无需在每次更改视图模型时重新测试视图;只要视图模型通过了测试,它的行为(就视图而言)就不应该改变


但是为了让它工作,您必须对视图模型测试有信心。而且它不会100%的工作。

Thx。当然是我的想法。。没有多少东西可以测试了。但是仍然可能存在bug,所以我想知道省略视图的测试是否可以接受。听你说,这听起来可以接受,我同意。。!谢谢你的提示。如果你给我你的意见,关于在正确使用MVVM时是否真的需要测试我的GUI,我会给你一个+1,这就是问题所在。你应该有一个VM层吗。对你应该测试你的观点。当然有些东西是VM或M测试无法捕获的。例如,绑定是否有效,或者单击按钮是否正确,等等。。。