我正在通过 SpecFlow、NUnit 和 Coypu(用于浏览器自动化,使用 WatiN 驱动程序)对项目进行验收测试。测试的运行是通过 powershell/psake 脚本调用的。
如果我在本地机器上运行这些测试,它们运行良好。但是,我们有一个构建服务器,Jenkins 作业将在其上自动运行这些测试,当通过这个 Jenkins 作业运行时,它们不会执行——它们只是挂起。
查看任务管理器,我可以看到iexplore.exe
Jenkins 作业运行时创建了两个实例。然而,在某一点之后,它们只是挂起 - 内存使用或 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 脚本,则规范运行正常。
当我尝试将基本 DI 用于 BrowserSession 时,此问题开始出现,如下所示:https ://gist.github.com/2301407
在此之前,我通过 NUnit [SetupFixture] 类的静态属性共享 BrowserSession。事情基本上都是这样工作的,除了一个涉及模态对话框的测试的小问题不能正常工作,但我不确定我做对了,所以想在要点中做这项技术
对于导致挂起的原因,我有点迷茫。任何想法它是什么或追踪它的提示?
更新:切换到 Firefox 作为浏览器,Selenium 作为驱动程序后,问题就消失了......