2011-06-14 64 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