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