【问题标题】:Watin test hang application while uploading file上传文件时,Watin 测试挂起应用程序
【发布时间】:2009-04-03 22:43:53
【问题描述】:

我有一个关于 watin 测试的问题,应该浏览 pdf 并将其上传到网页。这个测试在我的机器上运行顺利,总是找到pdf,点击提交并等待30秒上传完成。

但是当我尝试在构建机器 (teamcity) 上运行此测试时,该测试会在它应该等待上传的时候挂起。问题是测试不会超时,即使我为整个测试设置了 1 分钟的 nunit 超时,或者尝试重新加载页面。测试只是在上传步骤冻结了整个站点。

测试这个功能真的很重要,但是由于那些上传测试会挂起整个构建,我们必须手动完成,这并不是测试自动化的想法。

有人知道如何解决这个上传问题吗?或者至少设法使这个测试超时。

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)

【问题讨论】:

    标签: testing nunit teamcity watin


    【解决方案1】:

    问题在于,WatiN 使用 sendkeys 设置要上传的文件(名称)。在 WatiN 2.0 beta 1 中,这被更改为使用一些 API 调用。这解决了自动化需要文本输入的对话框时挂起测试的问题。

    【讨论】:

      【解决方案2】:

      我认为这里的问题是你的单元测试依赖于太多的外部资源,比如你的开发机器的文件系统,网络等等。

      问问自己测试的重要性是什么:是否有任何涉及的业务逻辑可以放入一个单独的类中?然后你可以为这个类编写测试。您基本上需要的是在不实际上传文件或上网的情况下测试上传过程的所有逻辑。

      【讨论】:

      • 但是 WATiN 用于回归测试,而不是单元测试。您的观点适用于单元测试,但回归测试将依赖于外部资源。
      猜你喜欢
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      相关资源
      最近更新 更多