У нас есть набор тестов WATIN, которые мы используем CruiseControl для запуска каждый час. Все тесты проходят на нашей локальной машине, но когда они запускаются с использованием CruiseControl, мы получаем спорадические сбои.
Мы используем CruiseControl из командной строки. Мы не пользуемся сервисом CruiseControl. Мы используем IE8.
Перед запуском каждого теста мы используем WATIN, чтобы закрыть все экземпляры браузера, чтобы убедиться, что каждый тест полностью изолирован.
Вот пример трассировки стека, которую мы наблюдаем при возникновении исключения:
Message: WatiN.Core.Exceptions.TimeoutException : Timeout while Internet Explorer busy
at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.ThrowTimeOutException(Exception lastException, String message)
at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.HandleTimeOut()
at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try[T](DoFunc`1 func)
at WatiN.Core.WaitForCompleteBase.WaitUntil(DoFunc`1 waitWhile, BuildTimeOutExceptionMessage exceptionMessage)
at WatiN.Core.Native.InternetExplorer.WaitForComplete.WaitWhileIEBusy(IWebBrowser2 ie)
at WatiN.Core.Native.InternetExplorer.IEWaitForComplete.DoWait()
at WatiN.Core.DomContainer.WaitForComplete(IWait waitForComplete)
at WatiN.Core.IE.WaitForComplete(Int32 waitForCompleteTimeOut)
at WatiN.Core.DomContainer.WaitForComplete()
at WatiN.Core.Element.WaitForComplete()
at WatiN.Core.Element.Click()
at Symetra.Web.Core.AutomatedTesting.WatiNTests.CommonTests.LinkTest(Browser browser, String linkText, String message) in d:\Source\BuildArea\OSS\Symetra.Web.Core.AutomatedTesting\Symetra.Web.Core.AutomatedTesting.WatiNTests\Common\CommonTests.cs:line 63
at Symetra.Web.Core.AutomatedTesting.WatiNTests.CommonTests.LinkTest(Browser browser, String linkText) in d:\Source\BuildArea\OSS\Symetra.Web.Core.AutomatedTesting\Symetra.Web.Core.AutomatedTesting.WatiNTests\Common\CommonTests.cs:line 57
at Symetra.Web.Core.AutomatedTesting.WatiNTests.GlowTests.BreadCrumbFixture.testid1Test() in d:\Source\BuildArea\OSS\Symetra.Web.Core.AutomatedTesting\Symetra.Web.Core.AutomatedTesting.WatiNTests\GlowTests\BreadCrumbFixture.cs:line 72
Что мы делаем, чтобы предотвратить это? Я пробовал помещать Thread.Sleep () перед строками оскорбления. Похоже, это не действует. Я очень осторожно избегал использования Thread.Sleep () и использовал browser.WaitUntilContainsText.
Я искал StackOverflow и списки адресов электронной почты пользователей WATIN - похоже, у других людей были похожие проблемы, но я не нашел никаких решений.