C# - WPF:测试策略

时间:2010-10-04 15:47:31

标签: c# .net wpf unit-testing testing

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

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

例如:

  • 单元测试
  • 功能测试
  • UI测试
  • 其他?

任何建议都将受到赞赏。

感谢。

5 个答案:

答案 0 :(得分:4)

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

  

使用。测试WPF应用程序   白色UI测试框架:   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来验证XAML(我自己没试过) -

  

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

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

  

AutomatedQA的TestComplete是一个   全面的自动化测试工具   这有助于QA团队实现自动化   功能,单位,回归等   测试各种各样的类型   应用程序类型,包括Windows   演示基金会(WPF)   应用

     

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

我还建议您阅读MS的WPF应用程序质量指南

  

本文档概述了   测试Windows演示文稿   基金会(WPF)应用程序和   控制。

     

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

答案 1 :(得分:3)

看看White。从他们的网站:

白色自动化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,因此所有版本都可以投入生产。

答案 2 :(得分:3)

现在,大多数关心WPF 单元测试的人倾向于使用MODEL-VIEW-VIEWMODEL(MVVM)设计模式。这是关于它的stackoverflow的tag

这使您可以对大部分代码(包括许多UI逻辑)进行单元测试,而不会妨碍WPF。

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

答案 3 :(得分:1)

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

单元测试部件的一个好工具是Moq。我经常使用它。

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

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

答案 4 :(得分:0)

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

模型+视图=结果。

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

您可以在此处看到它:http://www.youtube.com/watch?v=Xc_ty03lZ9U

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

代码本身看起来像

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

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