1

我有一个关于 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)
4

2 回答 2

1

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

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

于 2009-02-20T12:46:29.870 回答
1

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

于 2009-04-03T14:43:53.430 回答