2011-06-14 42 views
3

我的合作伙伴和我有一套测试在我们项目的构建服务器上每晚运行。我们使用CruiseControl.NET来运行服务器,并且测试使用WatiNNUnit来编写。我们将CruiseControl.NET作为一项服务运行,并且可以通过本地系统帐户与桌面进行交互。我们运行构建每隔几下,某些测试将错误消息未能如下列:测试偶尔使用CruiseControl.NET和NUnit:错误800704a6


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

给其他人来这里,这可能有所帮助 - http://stackoverflow.com/a/8797600/75963 – 2012-01-11 00:44:49

回答

2

本, 我有相同的问题,令人惊讶的是...我想我有解决方案。这似乎是一个线程问题。测试顶部的[RequiresSTA]标签旨在通过隐式将标签[STAThread]放置在每种方法上来创建每个测试为单线程。但是,我倾向于认为这些标记未在[SetUp][TearDown]方法中调用,从而导致线程问题。我希望通过明确地在每个方法上放置[STAThread]标签(包括[SetUp][TearDown]方法)来解决这个问题。我会让你知道任何进一步的变化,但它值得一试。

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

从我个人理解,请确保您的窗户是完全更新,再拍重新启动,以确保公正,并检查是否问题仍然存在。
如果有,请尝试运行ccnet不在服务模式下。
如果仍然不行,请尝试使用Internet选项安全性来确定这是否会影响问题。

HTH