C# – WPF:测试策略

我是C#4.0和WPF的新手,我即将开始一个新的应用程序。

来自C ++ / MFC世界,我对测试与最新技术一起使用的策略感兴趣。

例如:

  • unit testing
  • function测试
  • UI测试
  • 其他?

任何意见,将不胜感激。

谢谢。

正如Larry所说,White UI测试框架可用于UI测试WPF。 这篇文章更详细地解释了这一点 –

使用White UI Test框架测试WPF应用程序: http : //blogs.msdn.com/b/john_daddamio/archive/2008/04/04/testing-wpf-applications-with-the-white-ui-test-framework。 ASPX

还要看看这篇文章,了解如何自动化UI测试:

在WPF应用程序中自动执行UI测试: http : //msdn.microsoft.com/en-us/magazine/dd483216.aspx

Xaml团队已经提出了一个XAML Compliance Suite来validationXAML(我自己没试过) –

http://blogs.msdn.com/b/llobo/archive/2010/07/07/xaml-compliance-suite-v1.aspx

各种第三方工具也可用于测试WPF应用程序,例如AutomatedQA中的这一工具 –

AutomatedQA的TestComplete是一个全面的自动化测试工具,可帮助QA团队自动化各种应用程序类型的function,单元,回归和其他测试类型,包括Windows Presentation Foundation(WPF)应用程序。

http://www.automatedqa.com/products/testcomplete/testing-wpf-apps/

我还建议你阅读MS的WPF应用质量指南

本文档概述了测试Windows Presentation Foundation(WPF)应用程序和控件。

http://windowsclient.net/wpf/white-papers/wpf-app-quality-guide.aspx#intro

看看怀特 。 从他们的网站:

白色自动化Windows应用程序https://white-project.googlecode.com/svn/

White是一个基于Win32,WinForms,WPF,Silverlight和SWT(Java)平台自动化富客户端应用程序的框架。 它基于.NET,不需要使用任何专有脚本语言。 使用White的测试/自动化程序可以使用您已经使用的任何.NET语言,IDE和工具编写。 White提供了一致的面向对象的API,隐藏了Microsoft的UIAutomation库(White所基于的)和Windows消息的复杂性。 只发布了稳定版本的White,因此所有版本都可以投入生产。

目前,大多数关心WPF unit testing的人都倾向于使用MODEL-VIEW-VIEWMODEL( MVVM )设计模式。 这是关于它的stackoverflow上的标记 。

这使您可以在不使用WPF的情况下对大部分代码(包括许多UI逻辑)进行unit testing。

对于系统测试,请参阅此问题的其他答案。

如前所述,MVVM模式(甚至是Model-View-ViewModel-Presenter模式)是一个良好的开端。 它们允许您单独和隔离测试应用程序的不同问题。

Moq是unit testing部件的一个好工具。 我经常使用它。

我也经常从ViewModel到Model和Presenter进行验收测试。 所以我可以保证所有层一起工作。 这是UI测试和unit testing之间的折衷。 它的优点是测试运行得更快,因此运行更频繁。

如果您还想自动测试View和ViewModel之间正确的数据绑定,您应该查看Guia 。 它允许您直接实例化和测试单个UserControl。

我非常关心看起来正确的观点。 这意味着unit testing。 对我来说,最好的技术是只在单个unit testing中测试视图,这意味着

model + view = result。

开源validation实用程序ApprovalTests(www.approvaltests.com或nuget)将轻松测试Wpf视图。

您可以在此处查看该操作: http : //www.youtube.com/watch?v = Xc_ty03lZ9U

我建议观看winformsvideo1,因为它涉及更多关于如何测试视图的理论: http : //www.youtube.com/watch?v = hKeKBjoSfJ8

代码本身看起来像

var model = CreateModel(); var yourWpfView = new YourWpfView(model); WpfApprovals.Verify(yourWpfView); 

它将截取屏幕截图并与黄金大师进行比较。