WatiN, NUnit и CruiseControl.NET-- Сообщение об ошибке 800704a6 - PullRequest
4 голосов
/ 06 июля 2011

При запуске набора тестов в NUnit с WatiN через CruiseControl.NET (как сервис) появляется эта ошибка:

SetUp : System.Runtime.InteropServices.COMException : 
Creating an instance of the COM component with CLSID
{0002DF01-0000-0000-000-000000000046} from the IClassFactory 
failed due to the following error: 800704a6.
TearDown : System.NullReferenceException : Object reference 
not set to an instance of an object. 

Эта ошибка была кошмаром для отладки, потому что она не согласованапроисходит в 25% случаев) и не воспроизводится.У кого-нибудь есть подобные проблемы?

Ответы [ 2 ]

4 голосов
/ 10 января 2012

Перезагрузите компьютер

Существуют обновления Windows, препятствующие созданию новых объектов COM.

После просмотра ServerFault и StackOverflow я нашел несколько сообщенийкоторые упоминают код ошибки 800704a6.

Этот, в частности, заставил меня щелкнуть - https://serverfault.com/questions/179156/ie8-script-error-800704a6, заявив, что код ошибки был как ERROR_SHUTDOWN_IS_SCHEDULED

Iимел ту же ошибку тоже:

Creating an instance of the COM component with CLSID {0002DF01-0000-0000-000-000000000046} from the IClassFactory failed due to the following error: 800704a6

2 голосов
/ 13 июля 2011

AFAIK WatiN для работы нужен сеанс пользователя (то есть рабочего стола). Таким образом, мое предположение:

  • вы используете службу CruiseControl.Net как учетная запись обычного пользователя
  • эта учетная запись (обычно) зарегистрирована на сервере, на котором размещен CruiseControl.Net
  • тесты не выполняются, когда недоступен сеанс рабочего стола

Раньше этого было достаточно, чтобы установить флажок «Разрешить службе взаимодействовать с рабочим столом» («Свойства службы», вкладка «Вход в систему»), но я не уверен, что это все еще работает после Vista. Что будет работать (но безобразно и хакерски) - это запуск CruiseControl.Net с консоли, в сеансе рабочего стола, а не в качестве службы.

...