上传文件时,Watin测试挂起应用程序

时间:2009-02-20 12:42:54

标签: testing nunit teamcity watin

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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