我的合作伙伴和我在我们项目的构建服务器上每晚运行一套测试。我们使用CruiseControl.NET来运行服务器,测试使用WatiN和NUnit编写。我们将CruiseControl.NET作为一项服务运行,可以访问本地系统帐户上的桌面。我们每运行几次构建,某些测试将失败并显示错误消息,如下所示:
Test: cfarmweb.tests.Views.GeneralRegressionTest.DuplicateUsernameTest
Type: Failure
Message: SetUp : System.Runtime.InteropServices.COMException : Creating an instance of the COM component with CLSID {0002DF01-0000-0000-C000-000000000046} from the IClassFactory failed due to the following error: 800704a6. TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri, IDialogHandler logonDialogHandler, Boolean createInNewProcess)
at WatiN.Core.IE..ctor(String url)
at cfarmweb.tests.Navigator.SiteNavigator..ctor(String browserName, Boolean visible) in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Navigator\SiteNavigator.cs:line 35
at cfarmweb.tests.Views.GeneralRegressionTest.MakeNavigator() in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Views\GeneralRegressionTest.cs:line 34
--TearDown
at WatiN.Core.Browser.OnGetNativeDocument()
at WatiN.Core.DomContainer.get_NativeDocument()
at WatiN.Core.Document.ContainsText(String text)
at cfarmweb.tests.Navigator.SiteNavigator.HasText(String target) in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Navigator\SiteNavigator.cs:line 213
at cfarmweb.tests.Navigator.SiteNavigator.SignOut() in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Navigator\SiteNavigator.cs:line 110
at cfarmweb.tests.Views.GeneralRegressionTest.DisposeNavigator() in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Views\GeneralRegressionTest.cs:line 123
构建的成功似乎并不依赖于对代码本身的更改,因为我们已经在程序中与测试无关的部分更改后中断或修复。
我们都是软件测试领域的新手(以及一般的开发),但我们在网上找到的关于此错误的内容似乎与我们的情况无关。我们已经看到从系统重启等待到Internet Explorer 8与JavaScript错误的兼容性问题,但我们尝试过的任何问题都没有解决问题。最困难的部分之一是它不能始终如一地重现。我们如何解决这个问题?
答案 0 :(得分:2)
本,
我有完全相同的问题,令人惊讶的是......我认为我有解决方案。这似乎是一个线程问题。测试顶部的[RequiresSTA]
标记用于通过在每个方法上隐式放置标记[STAThread]
来创建每个单线程测试。但是,我倾向于认为这些标记没有在[SetUp]
或[TearDown]
方法上调用,从而产生了线程问题。我希望通过在每个方法(包括[SetUp]
和[TearDown]
方法)上明确放置[STAThread]标记来解决问题。我会告诉你任何进一步的变化,但它值得一试。
答案 1 :(得分:1)
有一些与Watin和IE8相关的类似问题。 Running Watin on TeamCity failed due to the following error: 800704a6 while trying to read data from a text file in teamcity https://serverfault.com/questions/179156/ie8-script-error-800704a6
根据我的理解,确保Windows已完全更新,再次重新启动以确保并检查问题是否仍然存在。
如果是,请尝试在服务模式下运行ccnet
如果仍然不好,请尝试使用互联网选项安全性来确定这是否会影响问题。
HTH