Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/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
如何使用MVVM通过WPF应用程序实现Specflow_Mvvm_Viewmodel_Specflow_Coded Ui Tests - Fatal编程技术网

如何使用MVVM通过WPF应用程序实现Specflow

如何使用MVVM通过WPF应用程序实现Specflow,mvvm,viewmodel,specflow,coded-ui-tests,Mvvm,Viewmodel,Specflow,Coded Ui Tests,我们有一个应用程序是在wpf+DevExpress中使用MVVM模式开发的。我们需要在viewmodel级别上使用MStest实现Specflow 有人试过这个吗?有什么建议吗?codedUI在viewmodel级别有什么优势吗?我还没有尝试过,但我看不出有什么问题。通过使用specflow,您可以创建一些方法来完成一件事,比如“用户按下about按钮”,您的代码如下所示 [Given(@"The user presses the about button")] public void TheU

我们有一个应用程序是在wpf+DevExpress中使用MVVM模式开发的。我们需要在viewmodel级别上使用MStest实现Specflow


有人试过这个吗?有什么建议吗?codedUI在viewmodel级别有什么优势吗?

我还没有尝试过,但我看不出有什么问题。通过使用specflow,您可以创建一些方法来完成一件事,比如“用户按下about按钮”,您的代码如下所示

[Given(@"The user presses the about button")]
public void TheUserPressesTheAboutButton()
{ 
    this.UIMap.PressAboutButton();
}

你可能需要费劲地创建所有的方法,但这不是什么大问题。这里有一个简单的指南。控件的命名和标识可能是一个小问题,这样CUIT builder就可以找到它们。

读到这个问题时,我有两个想法

首先,想想你是否真的需要通过UI自动化一切。有了MVVM这样的体系结构,您就有了一个很好的机会来访问UI下面的应用程序,并且仍然可以从您的测试自动化中获得很多东西。例如,根据ViewModels编写步骤定义。 针对UI的测试很容易产生脆性测试的风险。UI是大多数应用程序中变化非常频繁的部分。针对UI的测试需要以某种方式处理这一问题(稍后将对此进行详细介绍)

第二,对于需要对UI自动化的东西,请考虑在UI自动化库之上使用哪个是面向对象的抽象。我广泛地使用它,并且喜欢它

对于任何自动化,确保在实际自动化之上创建一个抽象,例如驱动程序模式。一种简单的方法是创建一个screen/page对象,该对象具有与相关屏幕/页面交互的属性和方法。然后,步骤定义使用这些包装器对象

保持步骤定义精简,包装对象充实。有点像MVC模式中的控制器。更多关于这个


我希望这是有帮助的

是的。它工作得很好。最大的挑战是真正定义你的句子结构和给定的/When/Then语句,使它们一致且可重复使用。否则,一个方法就会有标签和5-10个赠品。不太容易维护

我们使用Specflow对MVVM以及其他业务组件进行单元测试。给定的语句基本上会设置模拟数据,然后执行测试:

Given I have created a database context
And it contains the following Books
|ISBN   | Author  | Title  |
...

我还使用specflow进行功能测试(端到端),通过TFS进行自动化测试。部署数据库和服务器(使用真实数据或测试数据),然后针对该服务器/数据库执行功能测试套件(创建数据、修改数据等)

为了更好地支持这一说法(使用ViewModel层作为测试的入口点,而不是自动化地访问UI)——值得记住的是,XAML到ViewModel绑定引擎多年来已经从Microsoft和开发人员社区进行了非常广泛的测试。。。所以你应该相信这个逻辑是有效的。因此,当你推出该软件时,如果你的ViewModel级别测试haThanks的家伙。你的评论很有帮助。我们决定继续使用specflow的codedUI方法。我正在编写自己的基于页面对象的解决方案来创建脚本。。对于第三方wpf控件,编码UI的默认识别不是很好。到目前为止,它运行良好…@Logic mantra第三方控件的支持率非常低。。我目前正在使用Cobra-WinLDTP自动化基础设施的控制。非常好的快速工具,尽管它需要相当多的编码:)干杯,祝你好运