当前位置:  开发笔记 > 运维 > 正文

Watin测试在CC.Net失败

如何解决《Watin测试在CC.Net失败》经验,为你挑选了1个好方法。

我正在Windows Server 2003下的CC.Net上运行带有xUnit的Watin测试.

我有很多测试,在使用TestDriven.Net的开发盒和使用xUnit gui app的服务器上运行良好.但是,当CC.Net运行测试(作为MSBuild任务的一部分)时,该功能

ie.ContainsText("some text to find");

永远不会返回预期值.IE对象上的其他函数和属性似乎工作正常:Button(...).Click(),TextBox(...).Value等.

我知道服务帐户需要"允许服务与桌面交互".

我在本地系统和本地管理员下尝试过运行CC服务.管理员帐户只是挂起并且似乎永远不会完成运行测试(尽管它确实创建了一个iexplorer.exe进程的实例.

这是服务器上的权限问题,还是我从配置中遗漏了一些东西?



1> Brett..:

我们刚刚搞清楚如何解决这个问题.我们现在通过CruiseControl.net运行作为服务运行的watin测试.

我们需要我们的cc.net服务作为特定用户运行,以便访问我们正在测试的网站,因为安全性的设置方式.由于该服务作为域用户运行,因此在服务安全性选项卡上禁用"允许用户与桌面交互"复选框.我们不希望仅从始终登录的用户运行命令进程,因为我们希望进程在重新启动时自动启动.现在我们已经想通了

我们解决这个问题的方法是首先创建一个批处理文件来调用nunit-console.exe.nunit-console.exe的参数作为参数传递给批处理文件,然后传递参数.批处理文件的第二行和最后一行返回从nunit-console.exe返回的返回码.批处理文件基本上如下所示:

 nunit-console.exe %1 %2
 exit /b %ERRORLEVEL%

根据您的需要,您传递给nunit-console的参数数量可能会有所不同.

我们正在使用nant进行构建,因此我们将现有的nant任务替换为使用exec任务调用nunit-console,该任务调用cmd.exe,如下所示:

   
      
      
      
      
      
   

我不知道msbuild中的任务是什么样的,但我相信你可以查一查.最终的结果本质上是一个看起来像这样的命令:

   cmd.exe /interactive /c [batch file name] [parameter one value] [parameter two value]

或者,您可以使用nant并只创建msbuld nant任务来调用现有构建.

cmd.exe的'/ interactive'参数是关键,它在有权与桌面交互的进程上运行批处理文件.如果'/ c'参数是必需的,我实际上并不是肯定的,但它是按原样工作的.我们仍然告诉nunit将结果记录到相同的xml文件中,因此我们的合并任务不需要更改,并且测试结果报告给巡航控制工作正常.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有