Тестовете се провалят спорадично при използване на CruiseControl.NET с NUnit: грешка 800704a6

Моят партньор и аз имаме набор от тестове, изпълнявани всяка нощ на сървър за изграждане за нашия проект. Използваме 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, но нищо, което сме опитали, не е отстранило проблемите. Една от най-трудните части е, че не е последователно възпроизводим. Как можем да решим този проблем?


person Ben Sutton    schedule 14.06.2011    source източник
comment
За другите, които идват тук, това може да помогне - stackoverflow.com/a/8797600/75963   -  person Nick Josevski    schedule 11.01.2012


Отговори (2)


Бен, имах абсолютно същия проблем, достатъчно изненадващо... Мисля, че имам решението. Изглежда, че има проблем с нишката. Етикетът [RequiresSTA] в горната част на тест има за цел да създаде всеки тест като еднопоточен чрез имплицитно поставяне на тага [STAThread] на всеки метод. Склонен съм обаче да вярвам, че тези тагове не се извикват при методите [SetUp] или [TearDown], създавайки проблеми с нишките. Надяваме се, че разреших проблема, като поставих етикета [STAThread] на всеки метод (включително методите [SetUp] и [TearDown]) изрично. Ще ви уведомя за всякакви допълнителни промени, но си струва да опитате.

person Alan    schedule 22.06.2011

Има някои подобни проблеми, свързани с Watin и IE8. Изпълнение на Watin в TeamCity неуспешно поради следната грешка: 800704a6 при опит за четене на данни от текстов файл в teamcity https://serverfault.com/questions/179156/ie8-script-error-800704a6

Доколкото разбирам, уверете се, че вашият Windows е напълно актуализиран, направете още един рестарт, за да се уверите и проверете дали проблемът продължава.
Ако се появи, опитайте да стартирате ccnet не в сервизен режим.
Ако пак не работи, опитайте да си поиграете със сигурността на интернет опциите, за да определите дали това засяга проблема.

HTH

person Hertzel Guinness    schedule 16.06.2011