使用带有NUnit的CruiseControl.NET测试偶尔失败:错误800704a6
我的合作伙伴和我有一套测试,每晚在我们项目的构建服务器上运行。我们使用来运行服务器,并使用和编写测试。我们将CruiseControl.NET作为服务运行,可以访问本地系统帐户上的桌面。每运行几次构建,某些测试就会失败,并显示以下错误消息:使用带有NUnit的CruiseControl.NET测试偶尔失败:错误800704a6,nunit,cruisecontrol.net,watin,Nunit,Cruisecontrol.net,Watin,我的合作伙伴和我有一套测试,每晚在我们项目的构建服务器上运行。我们使用来运行服务器,并使用和编写测试。我们将CruiseControl.NET作为服务运行,可以访问本地系统帐户上的桌面。每运行几次构建,某些测试就会失败,并显示以下错误消息: 构建的成功似乎并不取决于对代码本身的更改,因为在对与测试无关的程序部分进行更改之后,我们已经有了中断或修复的构建 我们都是软件测试(和开发)领域的新手,但我们在网上发现的关于这个错误的任何东西似乎都与我们的情况无关。我们已经看到了从等待系统重新启动到In
构建的成功似乎并不取决于对代码本身的更改,因为在对与测试无关的程序部分进行更改之后,我们已经有了中断或修复的构建
我们都是软件测试(和开发)领域的新手,但我们在网上发现的关于这个错误的任何东西似乎都与我们的情况无关。我们已经看到了从等待系统重新启动到Internet Explorer 8的兼容性问题,再到JavaScript错误的所有情况,但是我们没有尝试过解决这些问题。最困难的部分之一是,它不是始终如一的复制品。我们如何解决此问题?与Watin和IE8相关的问题类似。 据我所知,请确保您的windows已完全更新,重新启动以确保并检查问题是否仍然存在。
如果确实如此,请尝试运行未处于服务模式的ccnet。
如果仍然不好,尝试使用internet选项安全性来确定这是否会影响问题 嗯本,
我遇到了完全相同的问题,令人惊讶的是…我想我找到了解决办法。这似乎是一个线程问题。测试顶部的
[RequiresSTA]
标记用于通过隐式地将标记[STAThread]
放置在每个方法上,将每个测试创建为单线程。但是,我倾向于认为这些标记没有在[SetUp]
或[TearDown]
方法上被调用,从而产生线程问题。我希望通过在每个方法(包括[SetUp]
和[TearDown]
方法)上明确地放置[STAThread]标记来解决这个问题。我会让你知道任何进一步的变化,但值得一试 对其他来这里的人来说,这可能会有所帮助-
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