UI测试框架+持续集成?

时间:2009-02-10 16:17:48

标签: c# winforms unit-testing continuous-integration cruisecontrol.net

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

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

NUnitForms

Project White

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

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

谢谢,

迪伦

5 个答案:

答案 0 :(得分:7)

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

我还没有尝试过,但是有来自Microsoft的UI Automation Framework

答案 3 :(得分:1)

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

答案 4 :(得分:0)

看看this approachproject's wiki中有详细信息。