2009-05-05 161 views
9

我们使用UI自动化和Nunit为WPF应用程序创建测试UI测试。 我们创建的测试在从本地机器运行时可以正常工作。那些测试永远不会在我们的构建服务器上成功运行(使用TeamCity)。打开应用程序窗口后,构建总是挂起但是,如果我登录(远程桌面),在我们的构建服务器上,所有UI自动化测试也能成功运行。 所以我猜测它可能与运行活动的Windows会话有关。任何想法如何说服我们的构建服务器创建活动的Windows会话或任何其他解决方案,使这些测试在构建服务器上运行?在构建服务器上运行UI自动化测试

回答

3

您没有太多选择。我将列出两个我知道,最优先选择第一:

  • 建立一个虚拟机您的生成服务器上。您的构建在虚拟机中执行。您可以锁定主机(即您的buildserver),以确保安全。
  • 让别人一直登录。这个场地造成安全问题。您可以通过删除鼠标,键盘和屏幕来缓解此问题,并且只能通过RDP或类似的方式访问buildserver。

编辑

看看这个TestComplete FAQ项目:TestComplete可以执行脚本当计算机被锁定?

+1

我们在构建服务器上的虚拟机中执行所有构建。所有测试都在本地帐户(不是系统)下运行。它没有解决问题。 保持一直登录的人不是一个选项。正如我所说的,我们有3个虚拟机,这个版本可以运行。所以每次构建选择最快的可用虚拟机。 vm上的本地用户通常已登录,但我们无法确定它未锁定。我们真的希望尽可能地使这个过程自动化,所以手动登录是最不吸引人的选择。 – andreja 2009-05-06 12:45:01

+0

@andreja,我已经通过Testcomplete的Q&A链接更新了答复。我怀疑有没有其他解决方法。你必须让某人登录。当您的虚拟机“解锁”并且主机“锁定”(但我不是系统管理员)时,我不会看到这会造成安全问题。 – 2009-05-06 13:10:29

+0

@andreja:如果您想自动登录,您可以设置一些注册表键值,并且您的构建用户将在构建VM启动后登录。如果你愿意,我可以查找相应的注册码。 – 2009-05-06 13:31:14

1

好吧,我只是在这里猜测。

尝试使用本地构建服务器用户而不是系统帐户运行TeamCity服务。 也许你必须在开始新构建之前用该帐户登录一次。

+0

我们已经试过了。当我说如果我登录(远程桌面),在我们的构建服务器上,所有UI自动化测试也能成功运行,我已经以该用户身份登录,并且所有测试都在该用户下运行。问题是,这个用户被锁定测试失败的第二个问题。如果我在本地计算机上运行它们并在运行时锁定计算机,它们也会失败。 – andreja 2009-05-06 12:32:24

1

它的definatley听起来像你需要运行你的测试与交互式会话而不是服务。添加“允许服务与桌面交互”可能会有所帮助,但Vista显然不支持此功能。

如果你可以将你的构建interactivley作为一个命令行来运行,而不是一个可以工作的服务器。

我们曾经使用Visual Studo 2008加载代理运行我们的UIAutomation测试来分发它们,作为虚拟机上的命令行工具运行,没有任何问题。

我也同意你可能不应该在构建服务器上运行UI测试,这是日常构建的一部分。

0

打开应用程序窗口后总是挂起。

实例化UI的测试?这不起作用,例如如果您获得模态对话框,则构建将挂起。这就是MVP模式发明的原因,它将活动表示代码从具体视图中分离出来。

您在自动化测试中使用模拟视图吗?

相关问题