我通过nunit成功地在本地运行测试。但是当我尝试通过teamcity运行它们时,会传递一些测试,但有些测试会因为出现以下错误而失败。
SetUp方法失败。 System.Runtime.InteropServices.COMException:由于以下错误,从IClassFactory创建具有CLSID {0002DF01-0000-0000-C000-000000000046}的COM组件的实例失败:800704a6。 在WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri,LogonDialogHandler logonDialogHandler,Boolean createInNewProcess) 在WatiN.Core.IE..ctor() at test.Setup()在C:\ Tests.vb:第14行
答案 0 :(得分:2)
不确定这是否已经解决,但我在用C#编写的另外两个不同的测试装置1中遇到了同样的错误,另一个用VB.NET编写。
对于C#fixture我需要做的就是解决这个问题,当我创建一个新的WatIn.IE实例时,我将第二个参数添加到:IE var ie = new IE(url, true ) “true”告诉WatIn“createInNewProcess”,它在新进程中打开下一个IE。
然而,由于某种原因,这对于用VB.NET编写的测试夹具不起作用。 对于这个fixture,我不得不在我们的一个C#库中调用一个方法来强制每个Tests“TearDown”方法中的IE闭包。 以下C#代码实现了这一诀窍:
public static void CloseInternetExplorers()
{
var processes = from process in Process.GetProcesses()
where process.ProcessName == "iexplore"
select process;
foreach (var process in processes)
{
while (!process.HasExited)
{
process.Kill();
process.WaitForExit();
}
}
}
答案 1 :(得分:0)
您是否尝试过在teamcity服务器上通过Nunit运行测试?这可能会为您提供更多信息。