我们使用UI自动化和Nunit为WPF应用程序创建测试UI测试。 我们创建的测试在从本地机器运行时可以正常工作。那些测试永远不会在我们的构建服务器上成功运行(使用TeamCity)。打开应用程序窗口后,构建总是挂起但是,如果我登录(远程桌面),在我们的构建服务器上,所有UI自动化测试也能成功运行。 所以我猜测它可能与运行活动的Windows会话有关。任何想法如何说服我们的构建服务器创建活动的Windows会话或任何其他解决方案,使这些测试在构建服务器上运行?在构建服务器上运行UI自动化测试
回答
您没有太多选择。我将列出两个我知道,最优先选择第一:
- 建立一个虚拟机您的生成服务器上。您的构建在虚拟机中执行。您可以锁定主机(即您的buildserver),以确保安全。
- 让别人一直登录。这个场地造成安全问题。您可以通过删除鼠标,键盘和屏幕来缓解此问题,并且只能通过RDP或类似的方式访问buildserver。
编辑
看看这个TestComplete FAQ项目:TestComplete可以执行脚本当计算机被锁定?
好吧,我只是在这里猜测。
尝试使用本地构建服务器用户而不是系统帐户运行TeamCity服务。 也许你必须在开始新构建之前用该帐户登录一次。
我们已经试过了。当我说如果我登录(远程桌面),在我们的构建服务器上,所有UI自动化测试也能成功运行,我已经以该用户身份登录,并且所有测试都在该用户下运行。问题是,这个用户被锁定测试失败的第二个问题。如果我在本地计算机上运行它们并在运行时锁定计算机,它们也会失败。 – andreja 2009-05-06 12:32:24
它的definatley听起来像你需要运行你的测试与交互式会话而不是服务。添加“允许服务与桌面交互”可能会有所帮助,但Vista显然不支持此功能。
如果你可以将你的构建interactivley作为一个命令行来运行,而不是一个可以工作的服务器。
我们曾经使用Visual Studo 2008加载代理运行我们的UIAutomation测试来分发它们,作为虚拟机上的命令行工具运行,没有任何问题。
我也同意你可能不应该在构建服务器上运行UI测试,这是日常构建的一部分。
打开应用程序窗口后总是挂起。
实例化UI的测试?这不起作用,例如如果您获得模态对话框,则构建将挂起。这就是MVP模式发明的原因,它将活动表示代码从具体视图中分离出来。
您在自动化测试中使用模拟视图吗?
- 1. 如何在构建服务器上运行specflow测试?
- 2. 在构建服务器上运行NUnit测试
- 3. 在单个CruiseControl.NET服务器上使用WatiN测试运行并行构建
- 4. 在Teamcity构建服务器上进行单元测试D3DERR_NOTAVAILABLE
- 5. VS测试在本地运行,但在构建服务器上找不到
- 6. 使用Selenium进行微服务架构的测试自动化
- 7. 运行JUNIT自动化构建测试 - 如何?
- 8. 在远程teamcity构建代理上运行selenium自动化测试
- 9. Windows UI自动化API在服务器上运行时未找到子元素
- 10. TFS构建服务器 - 升级后未运行测试
- 11. 在Ubuntu上运行iOS UI自动化
- 12. iPhone:在模拟器上运行自动化测试
- 13. 为什么我的测试在构建服务器上运行时失败?
- 14. 单元测试仅在构建服务器上运行时失败
- 15. 在TFS构建服务器上运行单元测试Fakes Framework |错误
- 16. Visual Studio的差异,当在Visual Studio和构建服务器上运行测试
- 17. Jenkins UI自动化测试
- 18. Calabash UI自动化测试
- 19. Flex UI测试自动化
- 20. 如何使用命令行运行xcode UI自动化测试
- 21. iphone自动化测试与仪器上adhoc构建
- 22. 在测试服务器上自动执行Word的错误
- 23. 本地或在服务器上运行Excel自动化
- 24. 设置生成服务器以运行NUnit Selenium自动测试
- 25. 是否需要Visual Studio才能在构建服务器上运行编码的UI测试?
- 26. 自动化测试,构建和部署
- 27. 按计划对服务器运行自动化测试作为健康检查
- 28. Web服务的自动化测试
- 29. 自动化Web服务测试
- 30. SOAP服务的自动化测试
我们在构建服务器上的虚拟机中执行所有构建。所有测试都在本地帐户(不是系统)下运行。它没有解决问题。 保持一直登录的人不是一个选项。正如我所说的,我们有3个虚拟机,这个版本可以运行。所以每次构建选择最快的可用虚拟机。 vm上的本地用户通常已登录,但我们无法确定它未锁定。我们真的希望尽可能地使这个过程自动化,所以手动登录是最不吸引人的选择。 – andreja 2009-05-06 12:45:01
@andreja,我已经通过Testcomplete的Q&A链接更新了答复。我怀疑有没有其他解决方法。你必须让某人登录。当您的虚拟机“解锁”并且主机“锁定”(但我不是系统管理员)时,我不会看到这会造成安全问题。 – 2009-05-06 13:10:29
@andreja:如果您想自动登录,您可以设置一些注册表键值,并且您的构建用户将在构建VM启动后登录。如果你愿意,我可以查找相应的注册码。 – 2009-05-06 13:31:14