将Roxy Unit Tester集成到TeamCity构建中

时间:2017-03-17 10:32:02

标签: unit-testing teamcity marklogic

Marklogic对roxy的描述:

  

Roxy Unit Tester生成JUnit XML输出,因此您可以将其与您最喜欢的连续测试工具一起使用

有人知道如何在TeamCity构建中实际集成Roxy Unit Tester吗?

具体来说,我正在寻找一种方法来调用TeamCity执行单元测试以及检索单元测试输出的方法。理想情况下,当测试未成功通过时,能够使构建失败。

3 个答案:

答案 0 :(得分:2)

Roxy的命令行界面(ml或ml.bat)可用于运行单元测试表单命令行。返回的XML采用某种标准格式(jUnit或其他),可以解析并用于确定测试的执行方式。

我们将Roxy测试与带有Jenkins的ml命令结合使用,并根据结果停止构建过程。

此功能的(非常薄)信息可在此处找到: https://github.com/marklogic/roxy/wiki/Deployer

基本上:

> ml <environment> test

然后看一下输出,看看这对你有什么帮助。

答案 1 :(得分:1)

TeamCity “我个人最喜欢的CI构建系统集成 - 我会使用“命令行”Runner“,选择”自定义脚本“并遵循David Ennis的建议。

要报告测试结果和构建状态,请使用Team City“[服务消息]界面。2

使用“Flow ID”分隔组件。 对每个测试套件使用"Test suite messages"。这可以包括捕获输出以显示在仪表板中。

对于每个测试,您都可以生成不同的结果。

我没有使用,但看起来很有用,"XML Report Processing"

The XML Report processing build feature allows using report files produced by an external tool in TeamCity. TeamCity will parse the specified files on the disk and report the results as the build results.
The report parsing can also be initiated from within the build via service messages.
XML Report Processing supports the following testing frameworks:
JUnit Ant task
Maven Surefire/Failsafe plugin
NUnit-Console XML reports
TRX reports (for MSTest 2005/2008/2010/2012/2013/2015 and VSTest 2012/2013/2015)
Google Test XML reports
XML output from CTest

答案 2 :(得分:1)

虽然使用ml <environment> test也是一个非常有效的解决方案,但我采用了稍微不同的方法:

可以直接调用在此地址运行测试的xquery模块(即default.xqy):http://your-server-name:test-app-port-number/test/

查看模块的代码,在参数“func”中传递值“run”将触发指定的“suite”的执行,并以指定的“format”返回结果。

从那里,我创建了一个简单的Power-Shell脚本,该脚本首先调用“list”方法来检索已部署的测试套件列表

Function Get-Tests-List {
    Write-Host "Retrieving test list"
    $body = @{ 
        func="list" 
    }
    [xml]$tests = Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body $body
    [System.Xml.XmlNamespaceManager] $nsmgr = $tests.NameTable;
    $nsmgr.AddNamespace('t','http://marklogic.com/roxy/test');
    $root = $tests.DocumentElement
    $root.SelectNodes("//t:suite", $nsmgr) | Select path
}

,然后遍历此列表以执行测试并将结果保存为JUnit xml文件

$url = "http://xxxxx:8102/test/"
$headers = @{"Authorization"="Digest username=""xxxx"", realm=""public"", nonce="""", uri=""/test/"", response=""xxxxxxxxxxx"", opaque="""""}
$output_folder = "C:\DeploymentScripts\test-outputs\"

$suites = Get-Tests-List

foreach($suite in $suites) {
    $body = @{ 
        func="run" 
        format="junit" 
        runsuiteteardown = "true"
        runteardown = "true"
        suite=$suite.path
    }
    Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body $body -OutFile ("{0}{1}.xml" -f $output_folder,$suite.path)
}

然后将这些文件传递给“XML报告处理”构建功能,该功能负责报告测试结果,甚至在需要时甚至使构建失败。