您是正确的,Bamboo 必须在控制台模式下运行。如果您还没有发现,那么您的 UI 测试机器必须有一个活动桌面才能进行 UI 测试。我们的墙板机位于远离其大型壁式显示器的壁橱中,恰好有一个未用于任何用途的面板,现在,通过远程桌面,它始终保持 UI 测试机处于活动状态。
我已经实现了你正在尝试的东西,但有点不同。我是一名软件开发人员,还管理我们的构建服务器。我们的测试团队使用 Telerik Test Studio,只希望以最简单的方式让一组 UI 测试每隔几个小时运行一次。上面提到的我们的一台构建机器现在负责此任务,并且已经安装了 Test Studio 的 ArtOfTest.Runner 部分。
我们的测试人员使用测试列表功能 (mytests.ailist),但我知道这也适用于单个测试 (mytest.tstest)。该项目只有一次导出到 Visual Studio。之后,他们只是构建测试并将它们添加到测试列表中。他们的整个解决方案是源代码控制。我确实修改了所有组件的 bin 部署的 vs 项目,以确保所有 dll 都到达构建机器。
遵循 ArtOfTest.Runner 安装说明后,您应该能够从任何路径运行它。所以在构建机器上试试这个:[AnyPath]\ArtOfTest.Runner C:[full path to test or list file]
如果你能让它发挥作用,那么你就是那里的 1/2 路。
为了用 Bamboo 开始这个,我们这样做:
- 从源代码管理中签出整个项目
- 构建它(确保 dll 进入 bin)
- 使用 NAnt 脚本启动测试
最初使用 NAnt 脚本的原因是因为我们不知道我们的路径是否始终相同并且需要计算它。虽然我们现在总是知道路径,但它仍然使事情变得更简单。
竹任务配置:
Executable: NAnt
Build File: [Relative path from root of project]\RunMyTestList.build
Targets: all
Environment Variable: LIST="OneSetOfTests.aiilist"
RunMyTestList.build NAnt 脚本如下所示:
<?xml version="1.0"?>
<project default="all">
<property name="ArtOfTest.Executable" value="ArtOfTest.Runner.exe" />
<property name="ArtOfTest.ListFile" value="${path::get-full-path(environment::get-variable('LIST'))}" />
<property name="returncode" value="" />
<target name="all">
<echo message="Start ArtOfTest.Runner: ${ArtOfTest.ListFile}" />
<exec program="${ArtOfTest.Executable}"
resultproperty="returncode"
commandline="list="${ArtOfTest.ListFile}""
failonerror="true"/>
<echo message="Finish ArtOfTest.Runner: ${returncode}"/>
</target>
</project>
所以现在测试将运行。但是我们只会在构建中获得成功或失败,而不是您(和我)可能想要的 Bamboo 的详细列表。这是因为它实际上是一个 NAnt 脚本而不是一个测试。但这最终成为一种祝福。ArtOfTest.Runner 编写非常好的结果文件,比任何单元测试日志都要好。我们不得不与测试人员共享构建机器上的结果文件夹,他们通常无法访问,但现在他们可以映射该共享并在 Test Studio 中打开结果文件,甚至查看分步屏幕截图。
我不认为这个配置是完美的,我可能会更多地调整它。我们的关键项目是我们使用 Bamboo 进行所有构建、测试和部署,因此我们对使用其他任何东西来启动 UI 测试没有兴趣。到目前为止,每个人都非常高兴。希望我能帮上忙。