Прерывистые тайм-ауты IE и COMException при выполнении тестов Watin с Nant и CruiseControl - PullRequest
3 голосов
/ 05 декабря 2011

Мы используем Watin и CruiseControl.net уже несколько недель, и большую часть времени они хорошо работают вместе. У нас не было проблем с запуском тестов на наших машинах для разработчиков. Мы также можем без проблем запускать тесты в интерактивном режиме при входе на CI-сервер.

В большинстве случаев также не возникает проблем, когда тесты выполняются в CruiseControl, но это не всегда так, поскольку в последнее время мы наблюдаем периодические ошибки. Ошибки кажутся случайными и случайными, но когда ошибка возникает, это всегда одно из следующего:

  1. WatiN.Core.Exceptions.TimeoutException: время ожидания, пока Internet Explorer занят

  2. System.Runtime.InteropServices.COMException: Создание экземпляра COM-компонента с CLSID {0002DF01-0000-0000-C000-000000000046} из IClassFactory не удалось из-за следующей ошибки: 800704a6

Наша серверная среда CI:

  • Windows Server 2008 R2

  • IIS 7,5

  • IE 8

  • Watin 2.0

  • CruiseControl 1.6.7981.1. Это работает как служба, которая входит в систему как пользователь нашего домена, потому что тестам необходим доступ к ресурсам домена.

«Случайно» провальные тесты создают свои экземпляры IE следующим образом:

    [TestMethod]
    public void SomeTest()
    {
        using (var browser = new IE())
        {
            // run tests here
        }
    }

Я также попытался создать IE в новом процессе следующим образом:

    [TestMethod]
    public void SomeTest()
    {
        using (var browser = new IE( true))
        {
            // run tests here
        }
    }

Но когда я это сделал, все наших тестов завершились неудачно с «WatiN.Core.Exceptions.BrowserNotFoundException: не удалось найти ограничение соответствия окна IE: время ожидания при ожидании подключения к вновь созданному экземпляру IE .. Поиск истек через 30 секунд »

Итак, у меня два вопроса:

  1. Может кто-нибудь сказать мне, как я могу остановить тайм-ауты и ком-исключения?
  2. Может кто-нибудь объяснить, почему IE (true) вообще не работал?

ТИА, Mike

1 Ответ

2 голосов
/ 09 декабря 2011

Смотрите этот ответ Карла Хёрберга:
Запуск Watin в TeamCity

CruiseControl.Net и TeamCity имеют одинаковую проблему при запуске в качестве службы, и обходной путь должен работать для обеих сред.

По умолчанию ccservice запускается как Локальная система, не имеет доступа к взаимодействию с пользовательским интерфейсом рабочего стола, а привилегии учетной записи Локальной системы ограничены, и это, скорее всего, является причиной возникновения исключений TimeoutException, COMException и BrowserNotFoundException.

...