2012-08-02 69 views
0

我正在通过SpecFlow,NUnit和Coypu(用于浏览器自动化,使用WatiN驱动程序)在项目上运行验收测试。测试的运行通过powershell/psake脚本调用。通过Jenkins工作运行时,Coypu/SpecFlow验收测试挂起

如果我在本地盒子上运行这些测试,它们运行良好。但是,我们有一个构建服务器,Jenkins作业将自动运行这些测试,并且在通过Jenkins作业运行时,它们不会执行 - 它们只是挂起。

在任务管理器中查看,我可以看到有两个iexplore.exe实例在Jenkins作业运行时创建。然而,在某一点之后,它们只是挂起 - 不改变内存使用情况或CPU。

nunit-agent-x86.exenunit-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。事情大部分工作正常,除了一个涉及模式对话框不能正常工作的测试的小问题,但我不确定我是否正确地做了这件事,所以想要做技巧的要点

我是有些什么导致挂起丢失。任何想法是什么或提示追踪它?

UPDATE:切换到Firefox作为浏览器,和硒作为驱动程序后,这个问题已经消失......

回答

0

我有一对夫妇的海狸鼠名单上的反应。我还没有对它们进行测试,因为目前Firefox的一切都很好,但是如果它们帮助其他人...

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

[...]我认为,watin需要nunit运行在STA(单线程),这可能与您的问题有关。

换句话说,也许你已经通过静态单例浏览器会话让你的测试线程安全,但是现在通过specflow的IOC你可以获得多个实例,这是由于nunit运行的方式。


上周四,2012年8月2日16点41分11秒UTC + 1,马特·埃利斯写道:

这听起来像它的IE浏览器的保护模式的方式获得。IE在不同的进程中运行不同的区域,例如Internet和Intranet (约:空白),并且IIRC WatiN不会 处理得很好。如果您可以在您的 服务器上禁用保护模式,则应该没问题。

相关问题