Nunit 通过Jenkins作业运行Coypu/SpecFlow验收测试时挂起

Nunit 通过Jenkins作业运行Coypu/SpecFlow验收测试时挂起,nunit,jenkins,watin,specflow,Nunit,Jenkins,Watin,Specflow,我正在通过SpecFlow、NUnit和Coypu(用于浏览器自动化,使用WatiN驱动程序)对一个项目进行验收测试。测试的运行是通过powershell/psake脚本调用的 如果我在本地机器上运行这些测试,它们运行良好。然而,我们有一个构建服务器,Jenkins作业将在其上自动运行这些测试,当通过这个Jenkins作业运行时,它们不会执行——它们只是挂起 在TaskManager中,我可以看到在Jenkins作业运行时创建了两个iexplore.exe。然而,在某一点之后,它们只是挂起-内存

我正在通过SpecFlow、NUnit和Coypu(用于浏览器自动化,使用WatiN驱动程序)对一个项目进行验收测试。测试的运行是通过powershell/psake脚本调用的

如果我在本地机器上运行这些测试,它们运行良好。然而,我们有一个构建服务器,Jenkins作业将在其上自动运行这些测试,当通过这个Jenkins作业运行时,它们不会执行——它们只是挂起

在TaskManager中,我可以看到在Jenkins作业运行时创建了两个
iexplore.exe
。然而,在某一点之后,它们只是挂起-内存使用或CPU没有变化

nunit-agent-x86.exe
nunit-console-x86.exe
也在运行,但大部分处于挂起状态,只是
nunit-agent-x86.exe
在内存中运行非常缓慢

如果我杀死其中一个iexplore.exe进程,事情会继续,但SpecFlow specs随后都会失败

在终止iexplore.exe时,日志中出现以下异常:

Unhandled Exception: System.Runtime.InteropServices.COMException: The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
如果我在登录到服务器时手动调用psake脚本,那么规范运行正常

当我尝试在BrowserSession中使用基本DI时,这个问题开始出现,如下所示:

在此之前,我通过NUnit[SetupFixture]类的静态属性共享BrowserSession。事情基本上是这样运作的,除了一个小问题,一个测试涉及一个模态对话框不能正常工作,但我不确定我做得对,所以我想做的技术要点

我有点不知道是什么原因导致了绞刑。你知道这是什么或者找到它的方法吗


更新:在切换到Firefox作为浏览器,Selenium作为驱动程序之后,问题已经消失了…

我在Coypu列表上得到了一些回应。我还没有测试它们,因为Firefox目前一切都很好,但万一它们对其他人有帮助

2012年8月2日星期四16:38:30 UTC+1,Adiel写道:

[…]我相信watin需要nunit在STA(单线程)中运行,这可能与您的问题有关

换句话说,也许您通过静态单例浏览器会话使您的测试线程安全,但现在通过specflow的IOC您做到了 由于nunit的运行方式,正在获取多个实例


2012年8月2日星期四16:41:11 UTC+1,Matt Ellis写道:

这听起来像是Internet Explorer的受保护模式妨碍了我们。IE运行不同的区域,如Internet和Intranet (和关于:空白)在不同的过程中,IIRC WatiN没有 处理得很好。如果您可以在计算机上禁用保护模式 服务员,你应该没事