【发布时间】:2011-11-03 14:56:08
【问题描述】:
我的团队有一堆由我们的 TeamCity 服务器自动运行的 WatiN 测试套件。我们最近将所有构建代理都切换到了 64 位,我还将 WatiN 测试切换为在 x64 模式下使用 NUnit。由于对 IE 浏览器的 Interop 调用失败或其他原因,Watin 总是给我们带来不常见的测试失败,但这种情况一直很少见。由于将所有内容都切换到 64 位,我们的任何测试套件几乎每次运行都会失败,并出现以下异常:
Test(s) failed. System.InvalidCastException : Specified cast is not valid.
at SHDocVw.IWebBrowser2.get_HWND()
at WatiN.Core.Native.InternetExplorer.IEBrowser.get_hWnd()
at WatiN.Core.DomContainer.StartDialogWatcher()
at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri, IDialogHandler logonDialogHandler, Boolean createInNewProcess)
...
我发现 related question 的 WatiN 用户看到了相同的异常,但这是因为她正在尝试多线程。我们没有做任何这样的事情,事实上我们正在使用 WatiN 文档所建议的正确的线程状态单元。我确实注意到了这个问题,尽管有人评论说这可能是因为 x86 与 x64 模式。
如何避免此错误导致我的测试经常失败?
如果只是切换回 32 位模式的问题,我可以处理,但我想确定没有更好的解决方案。谢谢。
更新:
在使用 64 位 NUnit 运行程序运行大约 5 次以上的测试套件后,他们每次都失败了,除了一次出现同样的错误。我们将它们切换回 32 位,并且已经成功运行了 10 多次。我想目前的临时解决方案是使用 32 位 NUnit 运行器,尽管我仍在寻找发生这种情况的原因或允许我们切换回 x64 的解决方案。
【问题讨论】:
标签: internet-explorer testing 64-bit watin