WatiN、NUnit 和 CruiseControl.NET-- 错误信息 800704a6

4
在使用CruiseControl.NET(作为服务)通过WatiN运行一组NUnit测试时,会出现以下错误:
SetUp : System.Runtime.InteropServices.COMException : 
Creating an instance of the COM component with CLSID
{0002DF01-0000-0000-000-000000000046} from the IClassFactory 
failed due to the following error: 800704a6.
TearDown : System.NullReferenceException : Object reference 
not set to an instance of an object. 

这个错误一直是令人头痛的,因为它不太一致(只有25%的时间会发生),而且无法复现。是否有其他人遇到过类似的问题?

2个回答

4

重新启动机器

有一些Windows更新正在妨碍实例化新的COM对象。

在ServerFault和StackOverflow上查找后,我发现了几篇帖子提到了800704a6错误代码。

特别是这篇文章让我恍然大悟 - https://serverfault.com/questions/179156/ie8-script-error-800704a6,指出该错误代码可能是ERROR_SHUTDOWN_IS_SCHEDULED

我也遇到了同样的错误:

使用CLSID {0002DF01-0000-0000-000-000000000046}创建COM组件的实例时, 由于以下错误而失败:800704a6


2
据我所知,WatiN需要用户(即桌面)会话才能工作。因此,我的猜测是:
  • 您正在使用普通用户帐户运行CruiseControl.Net服务
  • 该帐户通常登录到托管CruiseControl.Net的服务器
  • 当没有桌面会话可用时,测试将失败
以前只需勾选“允许服务与桌面交互”复选框(服务属性,选项卡“登录”),但我不确定在Vista之后是否仍然有效。可以使用丑陋、hackish的方式从控制台而不是作为服务运行CruiseControl.Net,在桌面会话中运行。

谢谢回复——有任何想法为什么测试会运行(并通过)75%的时间? - Alan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接