Приложение Watin Test зависает при загрузке файла - PullRequest
1 голос
/ 20 февраля 2009

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

Но когда я пытаюсь запустить этот тест на сборочной машине (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)

Ответы [ 2 ]

1 голос
/ 03 апреля 2009

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

1 голос
/ 20 февраля 2009

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

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

...