如何使用Jenkins运行编码的UI测试?

时间:2017-07-17 05:52:24

标签: visual-studio jenkins coded-ui-tests

在过去的几天里,我一直在试图弄清楚如何直接从Jenkins Job运行Coded UI测试。因为我对詹金斯很新。我计划使用安装在相同机器中的测试控制器和代理来运行jenkins作业,作为存储项目的本地VS项目存储库。

我的目标是让Jenkins Job运行一个直接与我的桌面交互的编码ui测试。

用于测试的规范:

  1. VS Enterprise 2015
  2. Agents for MS 2013
  3. Jenkins 1.69

到目前为止我所做的是下面(这是我从Jenkins运行的批处理命令,我从How to run Coded UI test file from Visual Studio command prompt using batch file?复制而来)在通过CMD运行时成功运行:

@echo off
:: Running tests without VS Enterprise is possible if you install the Test Agent package: https://msdn.microsoft.com/en-us/library/dd648127.aspx

set test_runner="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
set test_dlls="C:\Location\Compiled\Tests\Project.CodedUI.Test.dll"

:: If tests is set then only these comma separate test cases are run
:: set tests="Test1,Test2"
set tests=""

if %tests% == "" (
     %test_runner% %test_dlls% > CodedUITestResults.txt
) else (
     %test_runner% %test_dlls% /tests:%tests%
)
pause

我在我的Windows机器上使用我的本地存储库(不是TFS或GIT,因为这不是必需的),这是在运行脚本时成功执行编码的ui测试。

但是,当复制jenkins中的步骤时,我得到了这个错误(即使在.settings文件中使用VS配置测试控制器之后):/

调用测试类的初始化方法时出错CodedUITest:Microsoft.VisualStudio.TestTools.UITest.Extension.UITestException:要运行与桌面交互的测试,必须将测试代理设置为作为交互式进程运行。有关详细信息,请参阅“如何:设置测试代理以运行与桌面交互的测试”(http://go.microsoft.com/fwlink/?LinkId=159018 /

我的问题是:

  • 为什么我的测试不断给我这个错误,尽管我的事实 测试代理已设置为交互式?
  • 另外,我怎么做到 从Jenkins运行,以便它直接与桌面交互 作为一个互动过程?

2 个答案:

答案 0 :(得分:0)

MS测试控制器和代理是非常错误的,并且没有适当的文档。这就是我公司开发免费开源替代品的原因。你可以在这里找到它 - http://meissarunner.com 有一个文档链接,您可以很容易地进行设置。因为,它使用.NET核心,你需要指定一个额外的参数,提到你使用的.net Framework版本--nativeRunnerArguments =" - framework = net462"你可以在这里找到一个完整的框架列表 - https://docs.microsoft.com/en-us/dotnet/standard/frameworks如果你有任何问题,请给我留言。

以服务器模式启动Meissa:

short a, *pt = &a;
printf("%p, %p\n", (void*)&a, (void*)pt);
scanf("%hd", &a);
printf("%p, %p\n", (void*)&a, (void*)pt);

然后启动代理:

meissa.exe initServer

在詹金斯的工作中,开始跑步者:

meissa.exe testAgent --testAgentTag="APIAgent" --testServerUrl="http://IPServerMachine:5000"

答案 1 :(得分:0)

这有点晚了,但是要使代理与桌面进行交互,您需要做的就是在代理的设置上选中“以交互方式运行”复选框。如果它们都在同一框中,则您不需要主服务器和代理。我认为您可以更改jenkins服务以与桌面进行交互。希望这对某人有帮助。特工和大师的作品,但我一定会去看看meissarunner的,看看是否更好。