gpt4 book ai didi

unit-testing - 在 CC.Net 上的 Watin 测试失败

转载 作者:行者123 更新时间:2023-12-03 23:23:34 26 4
gpt4 key购买 nike

我在 Windows Server 2003 下的 CC.Net 上使用 xUnit 运行 Watin 测试。

我有很多测试都可以在带有 TestDriven.Net 的开发箱和带有 xUnit gui 应用程序的服务器上运行良好。但是,当 CC.Net 运行测试(作为 MSBuild 任务的一部分)时,函数

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

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

我知道服务帐户需要“允许服务与桌面交互”。

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

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

最佳答案

我们刚刚弄清楚如何解决这个问题。我们现在通过 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 任务替换为调用 nunit-console 的 exec 任务调用 cmd.exe,如下所示:
   <exec program="cmd.exe" failonerror="true">
<arg value="/interactive" />
<arg value="/c" />
<arg value="[batch file name]" />
<arg value="[parameter one value]" />
<arg value="[parameter two value" />
</exec>

我不知道在 msbuild 中同样的任务会是什么样子,但我相信你可以查一下。最终的结果本质上是一个如下所示的命令:
   cmd.exe /interactive /c [batch file name] [parameter one value] [parameter two value]

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

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

关于unit-testing - 在 CC.Net 上的 Watin 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com