【问题标题】:Coypu/SpecFlow acceptance tests hang when run via Jenkins jobCoypu/SpecFlow 验收测试在通过 Jenkins 作业运行时挂起
【发布时间】:2012-08-03 16:18:00
【问题描述】:

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

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

查看任务管理器,我可以看到在 Jenkins 作业运行时创建了两个 iexplore.exe 实例。然而,在某一点之后,它们只是挂起 - 内存使用或 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 脚本,则规范运行正常。

当我尝试对 BrowserSession 使用基本 DI 时,开始出现此问题,如这里的要点:https://gist.github.com/2301407

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

对于导致挂起的原因,我有点迷茫。有什么想法或追踪它的提示吗?

更新:切换到Firefox作为浏览器,Selenium作为驱动后,问题就消失了……

【问题讨论】:

    标签: nunit jenkins watin specflow


    【解决方案1】:

    我在 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 没有 处理得很好。如果您可以在您的设备上禁用保护模式 服务器,你应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-28
      • 2014-04-28
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 2012-05-02
      • 2023-04-11
      • 2020-01-07
      相关资源
      最近更新 更多