当前位置:  开发笔记 > 编程语言 > 正文

如何测试WPF用户界面?

如何解决《如何测试WPF用户界面?》经验,为你挑选了4个好方法。

使用带有MVC/MVP架构的win表单,我通常会使用一个类来包装视图以测试UI,同时使用模拟和控制器/演示者的模拟.包装器类将使UI中的大多数内容成为测试运行器通过属性和事件的可观察属性.

这是测试WPF应用程序的可行方法吗?有没有更好的办法?有什么值得注意的吗?



1> Kjetil Klaus..:

至于测试本身,您可能最好使用UI自动化框架.或者如果你想要一个更流畅和wpf/winforms/win32/swt独立的方式使用框架,你可以从Codeplex 下载White(前提是你可以在你的环境中使用开源代码).

对于陷阱; 如果您正在尝试测试您的视图,您可能会遇到一些线程问题.例如,如果您正在运行NUnit,默认的testrunner将在MTA(多线程公寓)中运行,而WPF需要作为STA(单线程公寓)运行.Mike Two对单元测试WPF有一个非常简单的入门,但没有考虑线程问题.Josh Smith对这篇帖子中的线程问题有一些想法,他也指出Chris Hedgate的这篇文章.Chris使用Peter Provost的CrossThreadTestRunner的修改版本以更加友好的方式包装MTA/STA问题.



2> aku..:

@Matt David,

请阅读文档并查看Microsoft CompositeWPF(aka Prism)的代码示例.这是一个专门用于教授如何以测试驱动方式处理MVP/MVC架构的项目.他们的示例应用程序包含演示者\控制器的单元测试和UI的非常酷的验收测试(他们使用White框架来模拟用户操作)



3> Gishu..:

手动.我不是自动化UI测试的忠实粉丝,如果这就是你所得到的.我不确定WPF的指导(需要通过aku的链接阅读)..因为它们仍然可以说是固执...... WPF从"正确的方式"的角度来看还没有稳定下来.除非你使用这些不断发展的框架之一.我会保守的

无情地测试(自动优选TDDed)逻辑/演示者/控制器.我不是在提倡邋iness或嗜睡.

保持UI皮肤薄,并让一些讨厌的测试人员通过探索性测试得到(手动)破解 - 当涉及UI时,没有什么能像'来自地狱的测试者'一样好.努力:自动化这种测试的增益比是巨大的,没有抓住一切,没有意义......除了安抚高层'看看经理!没有手!自我测试用户界面!'

PS:你可能想要观看这个(Mary Poppendieck的Google精益谈话)..尤其是关于在测试中自动化的部分


你忘记了回归测试 - 手动测试人员通过数百种表格来检查一些可以更容易自动完成的基本内容真是太痛苦了.更好地为测试人员节省了这些繁琐的东西,所以他可以集中精力进行讨厌的测试.
手动测试不能完全取代自动(反之亦然).自动化测试的目的不是为了发现错误,而是为了确保新的更改不会破坏已经过测试的旧功能.

4> Justas..:

2016更新:使用免费的TestStack.White框架自动执行WPF UI测试

Project White已被放弃,但其后继者TestStack.White可通过NuGet包获得.

TestStack.White具有启动WPF应用程序,查找窗口/ 用户控件元素,单击按钮/元素,模拟鼠标和键盘事件,等待等的实用程序方法.

将启动WPF应用程序,单击按钮并检查结果的示例如下所示:

using TestStack.White;
using TestStack.White.UIItems;
using TestStack.White.Factory;

[TestMethod]
public void TestDoSomething()
{
    //Opens the app
    var app = Application.Launch("MyApp.exe");

    //Finds the main window (this and above line should be in [TestInitialize])
    var window = app.GetWindow("My App Window Title", InitializeOption.NoCache);

    //Finds the button (see other Get...() methods for options)
    var btnMyButton = window.Get

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有