2009-02-20 5 views
0

У меня проблема с тестом watin, который должен искать PDF-файл и загружать его на веб-страницу. Этот тест проходит гладко на моей машине, всегда найдите pdf, нажмите «Отправить» и подождите 30 секунд для завершения загрузки.Watin test hang application при загрузке файла

Но когда я пытаюсь запустить этот тест на машине сборки (teamcity), бывает, что тест зависает в точке, когда он должен ждать загрузки. Проблема в том, что тест не требует таймаута, даже если я устанавливаю таймаут на nunit на 1 минуту для всего теста или пытается перезагрузить страницу. Тест просто заморозил весь сайт на этапе загрузки.

Тестирование этой функциональности действительно важно, но поскольку эти тесты с загрузкой повесить всю сборку, мы должны сделать это вручную, и это не совсем идея автоматизации тестирования.

У кого-нибудь есть идея, как решить эту проблему с загрузкой? Или, по крайней мере, удастся пропустить этот тест.

stack trace = at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) 
    at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) 
    at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) 
    at mshtml.DispHTMLBaseElement.click() 
    at WatiN.Core.InternetExplorer.IEElement.ClickOnElement() 
    at WatiN.Core.Element.Click() 
    at WatiN.Core.FileUpload.Set(String fileName) 
+0

Что такое «Ватин»? –

ответ

1

Проблема заключалась в том, что WatiN использовал sendkeys для установки файла (имени) для загрузки. В версии WatiN 2.0 beta 1 это изменено на использование некоторых вызовов API. Это решило проблему проверки подвески при автоматизации диалога, который требует ввода текста.

1

Я думаю, что проблема в том, что ваш блок теста зависит от слишком большого количества внешних ресурсов, таких, как ваш файловой системы вашего развития машины, сети и т.д.

Спросите себя, что важность тест таков: есть ли какая-либо бизнес-логика, которую вы можете внести в отдельный класс? Затем вы можете написать тесты для этого класса. Вам в основном нужно проверить всю логику процесса загрузки без фактической загрузки файла или перехода в сеть.

+1

Но WATiN предназначен для регрессионного тестирования, а не для модульного тестирования. Ваша точка действительна для модульного тестирования, но регрессионные тесты будут зависеть от внешних ресурсов. – Leslie