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

Testing Watin在上传文件时测试挂起应用程序,testing,nunit,teamcity,watin,Testing,Nunit,Teamcity,Watin,我对watin测试有一个问题,它应该浏览pdf并上传到网页。此测试在我的机器上运行顺利,始终查找pdf,单击提交并等待30秒以完成上载 但是,当我尝试在构建机器(teamcity)上运行此测试时,测试会在应该等待上载的时候挂起。问题是测试并没有超时,即使我将整个测试的超时时间设置为nunit为1分钟,或者尝试重新加载页面。测试只是在上传阶段冻结了整个网站 测试这个功能非常重要,但是由于这些测试挂起了整个构建,所以我们必须手动进行,这并不是真正的测试自动化 有人知道如何解决这个上传问题吗?或者至少

我对watin测试有一个问题,它应该浏览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)

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


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

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

但是WATiN用于回归测试,而不是单元测试。您的观点对于单元测试是有效的,但是回归测试将依赖于外部资源。