有没有一种自动化 Windows Forms 测试的方法?

55

我熟悉用 nunit 进行业务层的单元测试,但我现在想自动化测试 Windows 窗体 GUI 层。

我看到过 Watin 和 Watin Recorder 可以通过访问控件并对其进行自动化操作来自动化测试 Web 应用程序。但是,我很难找到类似于 Watin 的用于 Windows 窗体(使用 C# 或 VB.NET 编写)的开源工具。

是否存在这样的工具,或者所有产品都基于记录鼠标和键盘按键?

更新:我查看了这篇关于 White 的博客文章,它似乎是我正在寻找的东西。该博客文章提出了一些问题,但由于 White 只有 0.6 版本,这些问题可能已经解决了。如果其他人使用过 White 或其他工具,我会很感兴趣了解比较结果。

9个回答

30

现已弃用,被FlaUI取代。 - Jim

8
作为一个新的选择,我可以给你 FlaUI (https://github.com/Roemer/FlaUI)。它基本上是 white 的全新重写版本,拥有更多的功能和清晰的代码库。

8

AutomatedQA's TestComplete 是一款不错的GUI测试自动化应用程序,它支持不仅仅是Windows Forms,所以您可以将其重用于其他应用程序。它不是开源的,这是我找到的最好的选择。我还没有看到与WatiN等效的开源工具。它有一个免费试用版,让您决定是否喜欢它。我选择它的主要原因是,与其他测试应用相比,它真的是物美价廉。


4

清单

请查看更新的清单:.NET用户界面测试的自动化测试(TDD/BDD/ATDD/SBE)工具和框架清单

评论
Appium 支持测试通用 Windows 平台 (UWP) 和经典 Windows (Win32) 应用程序
Coded UI 已停止支持
FlaUI 自动化测试 Windows 应用程序的用户界面 (Win32、WinForms、WPF、商店应用)
NUnitForms 已停止支持
Ranorex 桌面、Web 和移动应用程序的 GUI 测试
Scrutiny 用于通过随机选择可用状态和有效转换来测试状态机的 F# 和 C# 库。设计用于与 UI 测试一起使用。
Squish GUI Tester 各种跨平台的桌面、移动、嵌入式和 Web 应用程序
TestComplete "使用易于使用的 GUI 测试自动化工具,确保您的应用程序质量而不牺牲速度或灵活性。我们的 AI 引擎和脚本或无脚本灵活性是无与伦比的,让您轻松测试每个桌面、Web 和移动应用程序。"
TestStack.White 已停止支持
WinAppDriver - Windows 应用程序驱动程序
- 用于在 Windows 应用程序上支持类似 Selenium 的 UI 测试自动化的服务
- 支持在 Windows 10 PC 上测试通用 Windows 平台 (UWP)、Windows Forms (WinForms)、Windows Presentation Foundation (WPF) 和经典 Windows (Win32) 应用程序

微软的推荐

WinAppDriver

微软建议使用WinAppDriver

Windows Application Driver(WinAppDriver)是一项服务,用于支持在Windows应用程序上进行类似Selenium的UI测试自动化。该服务支持在Windows 10 PC上测试通用Windows平台(UWP)、Windows窗体(WinForms)、Windows演示基础(WPF)和经典Windows(Win32)应用。

Coded UI(Visual Studio ≤ 2019)

以前,Coded UI是Visual Studio内置功能之一,也是UI自动化的一部分,被推荐用于应用程序的UI测试(现已弃用):

自动化的UI驱动功能测试的Coded UI Test已经被弃用。Visual Studio 2019是最后一个支持Coded UI Test的版本。我们建议使用Selenium来测试Web应用程序,使用Appium和WinAppDriver来测试桌面和UWP应用程序。对于使用NUnit测试框架测试iOS和Android应用程序,可以考虑使用Xamarin.UITest。
通过用户界面(UI)驱动应用程序的自动化测试被称为Coded UI Tests(CUITs)。这些测试包括对UI控件的功能测试。它们允许您验证整个应用程序,包括其用户界面,是否正常运行。Coded UI Tests在用户界面中存在验证或其他逻辑的情况下特别有用,例如在网页中。它们也经常用于自动化现有的手动测试。
了解更多信息:https://learn.microsoft.com/en-us/visualstudio/test/use-ui-automation-to-test-your-code

它已经过时了。 - Christophe Chenel

3

WinAppDriver是一个类似于Selenium的UI测试自动化服务,用于测试包括Windows Forms应用程序在内的Windows应用程序。它可以与Appium一起使用,以完成测试自动化框架。


2
据我所知,White是在微软的UI Automation框架之上的一个抽象层。我已经编写了类似的层,我们在项目中使用效果很好。因此,White绝对值得一看。
微软已经发布了UI Automation的源代码,所以如果需要,您应该能够调试整个堆栈。
真正酷的事情是,在许可成本方面,您可以扩展并运行尽可能多的机器来执行。
我们在VSTS内部运行,并将结果链接到需求,但您可以使用c# express和nUnit,几乎不花费任何成本获得一流的工具和语言。

2
以下是关于自动化测试代码的MSDN Magazine文章链接:
  • Bugslayer(2007年3月):使用UIAutomation
  • Test Run(2007年12月):使用PowerShell
  • Bugslayer(2002年3月):Tester,一个记录鼠标点击和键盘按键,并播放它们的实用程序,以及检查程序行为。非常适用于非托管代码。使用Windows句柄,因此可能不适用于托管代码。

1

您可以查看 Microsoft UI Automation 框架。自 .NET 3.0 版本以来已包含在其中。实际上,这就是 White 框架使用的框架。


0

您还可以使用Winium(https://github.com/2gis/Winium),它适用于除Windows 10之外的多个Windows平台,并且类似于Selenium,具有支持远程控制应用程序的额外功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接