Тесты периодически терпят неудачу при использовании 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

Насколько я понимаю, убедитесь, что ваши окна полностью обновлены, сделайте еще один перезапуск, чтобы убедиться и проверить, сохраняется ли проблема.
Если это так, попробуйте запустить ccnet не в сервисном режиме.
Если все еще не работает, попробуйте поиграться с безопасностью опций Интернета, чтобы определить, влияет ли это на проблему.

HTH

person Hertzel Guinness    schedule 16.06.2011