C# 有没有办法自动化windows窗体测试?
我熟悉nunit用于业务层的单元测试,但是我现在希望自动化win forms gui层的测试 我见过watin recorder,它通过访问控件并使其自动化来自动测试web应用程序。然而,我正在努力为windows窗体(用c#或vb.net编写)找到一个watin等价物,最好是开源的 是否存在一个或所有产品都基于录制鼠标和键盘按键 更新:我已经看过了,它似乎就是我要找的那种东西。这篇博文提出了一些问题,但由于white仅在0.6版中出现,这些问题可能会得到解决。如果其他人使用白色或任何其他颜色进行比较,请感兴趣 是一个很好的自动化GUI测试的测试应用程序。它不仅支持Windows窗体,还支持其他应用程序。它不是开源的,这是我发现的最好的。我还没有见过一个与WatiN相当的开源软件。它是免费试用的,由你决定是否喜欢。我选择它的主要原因是,与其他测试应用程序相比,它确实是经济高效的。我们成功地使用了White项目 前一个问题的相同答案 编辑C# 有没有办法自动化windows窗体测试?,c#,.net,vb.net,winforms,automated-tests,C#,.net,Vb.net,Winforms,Automated Tests,我熟悉nunit用于业务层的单元测试,但是我现在希望自动化win forms gui层的测试 我见过watin recorder,它通过访问控件并使其自动化来自动测试web应用程序。然而,我正在努力为windows窗体(用c#或vb.net编写)找到一个watin等价物,最好是开源的 是否存在一个或所有产品都基于录制鼠标和键盘按键 更新:我已经看过了,它似乎就是我要找的那种东西。这篇博文提出了一些问题,但由于white仅在0.6版中出现,这些问题可能会得到解决。如果其他人使用白色或任何其他颜色进
White项目已经移动,现在作为TestStack的一部分位于上。您可以查看Microsoft框架。从3.0版开始,它就包含在.NET中。这实际上就是White框架使用的内容。据我所知,它是微软框架顶部的一个抽象层。我写了一个类似的层,我们在项目内部使用它,它工作得很好。所以怀特一定值得一看 Microsoft已经发布了UI自动化的源代码,因此如果必要,您应该能够在必要时对整个堆栈进行调试 真正酷的是,有了许可证成本,您可以扩展并运行任意数量的机器来执行
我们在VST内部运行,并将结果与需求联系起来,但您可以使用c#express和nUnit,获得一流的工具和语言,而且成本很低。以下是MSDN杂志中有关自动测试代码的一些链接:
- 使用UIAutomation 2007年3月
- 使用PowerShell 2007年12月
- Tester,一个用于记录鼠标点击和击键,然后回放的实用程序&程序检查行为。非常适合非托管代码。使用windows句柄,因此可能无法很好地用于托管代码。2002年3月李>
- 作为一种新的选择,我可以给你一个FlaUI()。它基本上是对white的完全重写,具有更多功能和干净的代码库。Microsoft建议使用:
Windows应用程序驱动程序(WinAppDriver)是要支持的服务
Windows应用程序上类似于Selenium的UI测试自动化。这项服务
支持测试通用Windows平台(UWP)、Windows窗体
(WINFALSE)、Windows演示基础(WPF)和经典窗口
Windows 10 PC上的(Win32)应用程序
以前,建议将Visual Studio内置功能和UI自动化的一部分用于应用程序UI测试(现在不推荐使用该功能)): 用于自动化UI驱动功能测试的编码UI测试是 不赞成。Visual Studio 2019是编码UI测试的最后一个版本 将提供。我们建议使用Selenium测试web应用程序 和带有WinAppDriver的Appium,用于测试桌面和UWP应用程序。 考虑使用XAMARIN UITEST测试iOS和Android应用程序 NUnit测试框架 通过用户界面驱动应用程序的自动化测试 (UI)称为编码UI测试(CUIT)。这些测试包括 UI控件的功能测试。他们让你验证 整个应用程序,包括其用户界面,正在运行 正确地编码的UI测试在有 用户界面中的验证或其他逻辑,例如在web中 页它们还经常用于使现有手册自动化 测试
阅读更多信息:是一种类似于Selenium的UI测试自动化服务,用于测试Windows应用程序,包括Windows窗体应用程序。它可以与测试自动化框架一起使用。您也可以使用Winium(),它可以在Windows 10以外的多个Windows平台上工作,与Selenium类似,具有支持远程控制应用程序的额外功能。它是deprecated@ChristopheChenel:谢谢你的留言,我更新了答案。