我们使用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. 在单个CruiseControl.NET服务器上使用WatiN测试运行并行构建
- 2. 在Teamcity构建服务器上进行单元测试D3DERR_NOTAVAILABLE
- 3. VS测试在本地运行,但在构建服务器上找不到
- 4. 使用Selenium进行微服务架构的测试自动化
- 5. 运行JUNIT自动化构建测试 - 如何?
- 6. Windows UI自动化API在服务器上运行时未找到子元素
- 7. iPhone:在模拟器上运行自动化测试
- 8. TFS构建服务器 - 升级后未运行测试
- 9. Calabash UI自动化测试
- 10. Flex UI测试自动化
- 11. Visual Studio的差异,当在Visual Studio和构建服务器上运行测试
- 12. 如何使用命令行运行xcode UI自动化测试
- 13. iphone自动化测试与仪器上adhoc构建
- 14. 在测试服务器上自动执行Word的错误
- 15. 自动化测试,构建和部署
- 16. 自动化Web服务测试
- 17. Web服务的自动化测试
- 18. SOAP服务的自动化测试
- 19. 自动化Web服务测试
- 20. UI自动化测试在.NET
- 21. 尽管在团队基础构建服务中定义了自动化测试 - 它不运行
- 22. 自动化测试,本地和构建服务器上,我试图旋转了一个副本集(我需要oplog)的蒙戈图像自动化测试
- 23. 单元测试用例在构建服务器上失败
- 24. 如何在MF测试服务器(远程服务器)上运行“PushNotification”示例?
- 25. SBT测试运行CI服务器
- 26. 在竹上运行UI测试
- 27. 在TeamCity上运行自动化的Powershell-NUnit测试
- 28. 是否可以在Ubuntu上运行Appium iOS自动化测试?
- 29. 在iOS实际设备上运行TestNG自动化测试 - iPad
- 30. 使用Web服务API在Jenkins上运行自定义构建
我们在构建服务器上的虚拟机中执行所有构建。所有测试都在本地帐户(不是系统)下运行。它没有解决问题。 保持一直登录的人不是一个选项。正如我所说的,我们有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