10

所以我有一个我继承的应用程序,我想围绕它构建一个自动化测试套件。该应用程序在设计时并未考虑可测试性,并且代码是“大泥球”。我的计划是使用 UI 自动化测试框架并在 UI 级别创建一套测试,直到我有足够的覆盖率,让我可以自信地开始重构并在代码中引入一些接缝以提高可测试性和设计。

这是一个 .Net WinForms 应用程序,我知道的两个框架是:

NUnitForms

白色计划

从我读到的内容来看,这两个框架在尝试作为自动构建(持续集成)的一部分运行时都会出现问题,因为大多数 CI 产品作为 Windows 服务运行,如果 UI 使用模式对话框,则应用程序将死得很惨死亡。我使用 CruiseControl.Net 作为我的 CI 工具。

有没有人有任何建议来解决这个问题?使用的替代框架可能会使情况变得更好?

谢谢,

迪伦

4

5 回答 5

7

NUnitForms 有一个“隐藏桌面”功能,可以让你从 cc.net 运行单元测试。

http://automaticchainsaw.blogspot.com/2007/09/winforms-testing-using-nunitforms.html http://automaticchainsaw.blogspot.com/2007/09/hidden-desktops-and-nunitforms.html

于 2009-02-10T17:50:04.010 回答
3

您实际上可以通过控制台应用程序运行巡航控制,因此它可以进行交互式桌面访问。如果服务器重新启动或崩溃,它不会自动恢复,但至少你可以做到。

也就是说,大多数人采用自动化 UI 测试(winforms、wpf 或 web)的方法是通过构建服务器运行所有非交互式测试。一旦这些测试通过,他们就会将应用程序部署到测试环境并手动触发针对新构建的代码版本的测试运行。

这使人们有机会重置测试环境(对 UI 测试很重要),并检查新版本的应用程序是否正确构建以及所有单元测试是否通过。毕竟,如果您知道单元测试失败了,那么运行 UI 测试毫无意义。:-)

于 2009-02-10T22:56:22.667 回答
2

我还没有尝试过,但是有来自 Microsoft的UI 自动化框架:

于 2009-02-10T16:24:00.037 回答
1

我们在控制台模式下运行持续集成验收测试,而不是作为登录 Virtual PC 中的 Windows 服务。这对我们有用。

于 2009-07-06T13:26:03.793 回答
0

看看这个方法该项目的 wiki中有详细信息。

于 2014-09-28T11:18:04.323 回答