【发布时间】:2012-08-03 16:18:00
【问题描述】:
我正在通过 SpecFlow、NUnit 和 Coypu 对项目进行验收测试(对于浏览器自动化,使用 WatiN 驱动程序)。测试的运行是通过 powershell/psake 脚本调用的。
如果我在本地机器上运行这些测试,它们运行良好。但是,我们有一个构建服务器,Jenkins 作业将在其上自动运行这些测试,当通过这个 Jenkins 作业运行时,它们不会执行——它们只是挂起。
查看任务管理器,我可以看到在 Jenkins 作业运行时创建了两个 iexplore.exe 实例。然而,在某一点之后,它们只是挂起 - 内存使用或 CPU 没有变化。
nunit-agent-x86.exe 和 nunit-console-x86.exe 也在运行,但大部分都挂起,只是 nunit-agent-x86.exe 在内存中增长非常缓慢。
如果我杀死其中一个 iexplore.exe 进程,事情会继续,但 SpecFlow 规范随后都会失败。
在杀死iexplore.exe时,日志中出现以下异常:
Unhandled Exception: System.Runtime.InteropServices.COMException: The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
如果我在登录到服务器时手动调用 psake 脚本,则规范运行正常。
当我尝试对 BrowserSession 使用基本 DI 时,开始出现此问题,如这里的要点:https://gist.github.com/2301407
在此之前,我通过 NUnit [SetupFixture] 类的静态属性共享 BrowserSession。事情基本上都是这样工作的,除了一个涉及模态对话框的测试的小问题无法正常工作,但我不确定我做对了,所以想在要点中做这项技术
对于导致挂起的原因,我有点迷茫。有什么想法或追踪它的提示吗?
更新:切换到Firefox作为浏览器,Selenium作为驱动后,问题就消失了……
【问题讨论】:
标签: nunit jenkins watin specflow