关于c#:是否有任何方法可以自动进行Windows表单测试?

关于c#:是否有任何方法可以自动进行Windows表单测试?

Is there any way to automate windows forms testing?

我熟悉用于业务层单元测试的nunit,但是现在我希望自动化win表单gui层的测试。

我已经看到过watin和watin记录器通过访问控件并使它们自动化来对Web应用程序进行自动化测试。 但是,我正在努力寻找适合Windows形式(用c#或vb.net编写)的watin替代品,最好是开源的。

是否存在或全部基于录制鼠标和键盘按键的产品?

更新:我已经看过这篇白色的博客文章,这似乎是我想要的东西。 该博客文章提出了一些问题,但是由于白色仅在0.6版中,这些问题可以解决。 如果其他人使用白色或其他任何东西进行比较感兴趣。


请访问http://www.codeplex.com/white和http://nunitforms.sourceforge.net/。我们成功地使用了White项目。

对上一个问题的相同答案

编辑

White项目已经迁移,现在作为TestStack的一部分位于GitHub上。


AutomatedQA的TestComplete是一个很好的测试应用程序,可以自动进行GUI测试。它不仅支持Windows窗体,而且还可以将其重新用于其他应用程序。它不是开源的,这是我发现的最好的。我还没有看到等效于WatiN的开源软件。它有免费试用版,供您决定是否喜欢。我使用它的主要原因是,与其他测试应用程序相比,它确实具有成本效益。


作为一种新的替代方法,我可以给您FlaUI(https://github.com/Roemer/FlaUI)。基本上,这是对白色的完整重写,具有更多功能和清晰的代码库。


这是MSDN Magazine上有关自动测试代码的一些链接:

  • 使用UIAutomation Bugslayer 2007年3月
  • 使用PowerShell测试运行2007年12月
  • Tester,一种用于记录鼠标单击和击键,然后进行回放和程序检查行为的实用程序。非常适合非托管代码。使用Windows句柄,因此可能不适用于托管代码。 Bugslayer,2002年3月。

据我所知,怀特是Microsoft UI自动化框架之上的抽象层。我已经写了一个类似的层,可以在项目内部使用,并且效果很好。所以怀特·德芬纳特利值得一看

Microsoft已将源代码发布到UI自动化,因此,如果有必要,您应该可以在整个堆栈中进行调试。

真正很酷的事情是,凭借许可证成本,您可以扩展并运行任意数量的计算机来执行。

我们在VSTS中运行并将结果链接到需求,但是您可以使用c#express和nUnit并以极少甚至没有成本的方式获得一流的工具和语言。


您可以签出Microsoft UI自动化框架。自3.0版以来,它已包含在.NET中。无论如何,这实际上是White框架使用的。


您可以考虑使用编码UI,Visual Studio内置功能以及UI自动化的一部分:

Automated tests that drive your application through its user interface
(UI) are known as coded UI tests (CUITs). These tests include
functional testing of the UI controls. They let you verify that the
whole application, including its user interface, is functioning
correctly. Coded UI Tests are particularly useful where there is
validation or other logic in the user interface, for example in a web
page. They are also frequently used to automate an existing manual
test.

[...] a typical development
experience might be one where, initially, you simply build your
application (F5) and click through the UI controls to verify that
things are working correctly. You then might decide to create a coded
test so that you don’t need to continue to test the application
manually. Depending on the particular functionality being tested in
your application, you can write code for either a functional test, or
for an integration test that might or might not include testing at the
UI level. If you simply want to directly access some business logic,
you might code a unit test. However, under certain circumstances, it
can be beneficial to include testing of the various UI controls in
your application. A coded UI test can automate the initial (F5)
scenario, verifying that code churn does not impact the functionality
of your application.

有关更多信息,请访问:https://docs.microsoft.com/zh-cn/visualstudio/test/use-ui-automation-to-test-your-code


推荐阅读