Тесты время от времени терпят неудачу при использовании CruiseControl.NET с NUnit: ошибка 800704a6 - PullRequest
3 голосов
/ 14 июня 2011

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

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Бен, У меня была точно такая же проблема, как ни удивительно ... Думаю, у меня есть решение. Кажется, это проблема с многопоточностью. Тег [RequiresSTA] в верхней части теста предназначен для создания каждого теста однопоточным путем неявного размещения тега [STAThread] в каждом методе. Однако я склонен полагать, что эти теги не вызываются в методах [SetUp] или [TearDown], что создает проблемы с многопоточностью. Надеюсь, я решил проблему, поместив тег [STAThread] в каждый метод (включая методы [SetUp] и [TearDown]) явно. Я сообщу вам о любых дальнейших изменениях, но это стоит попробовать.

1 голос
/ 16 июня 2011

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

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

HTH

...