将Hudson与MS Test集成?

时间:2008-12-09 13:30:36

标签: unit-testing continuous-integration hudson mstest

是否可以将Hudson与MS Test集成?

我现在正在使用Hudson在我的开发机器上设置一个较小的CI服务器,这样我就可以获得一些统计信息(即FxCop和编译器警告)。当然,如果它可以运行我的单元测试并显示它们的输出也会很好。

到目前为止,我已将以下批处理任务添加到Hudson中,这使得它能够正确运行测试。

"%PROGRAMFILES%\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /runconfig:LocalTestRun.testrunconfig /testcontainer:Tests\bin\Debug\Tests.dll

然而,据我所知,Hudson不支持分析MS测试结果。有谁知道MSTest.exe生成的TRX文件是否可以转换为JUnitNUnit结果格式(因为Hudson支持这些格式),或者是否有其他方法可以集成MS测试单元用Hudson测试?

5 个答案:

答案 0 :(得分:17)

我一直想写这个作为指南并开发一个插件,但我还没有找到它。我知道这个问题已经过时但是我确定其他人想要同样的事情,所以这就是它。

在Hudson的项目配置中:

执行Windows批处理命令


SET MSTest="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe"
SET XSLParser="C:\MsBuildNunit\msxsl.exe"

SET TestDLL=path-to-your-test-projects.dll
SET TestOutFILE=TestResults\some-unique-filename.trx
SET TransformedOutputFile=%TestOutFILE:.trx=%.xml
SET XSLFile=c:\MsBuildNunit\MSBuild-to-NUnit.xslt

MKDIR TestResults

%MSTest% "/testcontainer:%TestDLL%" /nologo /resultsfile:%TestOutFILE% 

%XSLParser% %TestOutFILE% %XSLFile% -o %TransformedOutputFile%

SET ERRORLEVEL=0

然后选中“发布NUnit测试结果报告”框,并输入“测试报告XML”

TestResults/*.xml

C:\ MsBuildNunit中有一个XSLT,以及来自Microsoft的msxsl.exe。

您可以从 here 下载MSBuild到NUnit.xslt并从Microsoft here 获取msxsl.exe,或者您可以获取包含xslt和exe here

的MsBuildNunit文件夹的压缩副本

运行时,它调用运行测试的MSTest.exe并以microsofts trx(xml)格式输出格式。然后它使用xslt和trx调用msxsl.exe并将其转换为nunits xml格式。在构建结束时,Hudson会像任何其他Nunit测试结果那样选择它,你很高兴。

编辑添加: 我忘了提到,有了这个xslt,我们得到了完整的测试结果。我们有多个测试项目和多个dll,我们获得了很好的反馈,能够使用趋势图,按名称查看测试,查看测试的状态,如果出现错误,我们会得到错误消息以及堆栈跟踪。基本上几乎所有你会得到Nunit的东西。

编辑(再次):我刚才在变换中添加了测试持续时间,现在它将显示在Hudson中!似乎对我们的测试很有用。

编辑:我尝试了新的MSTest插件,它目前不支持解析多个TRX文件,只有1,所以目前这是你唯一的解决方案,如果你像我们一样,有多个测试程序集,你必须通过MSTest运行。

答案 1 :(得分:16)

Hudson有一个新的MSTest插件。只需指定.trx文件的位置,即可完成工作。如果插件使用Allen的解决方案,我不会感到惊讶。

答案 2 :(得分:2)

我已经能够使用“hangy”命令行的变体,以及MSTest插件来成功运行和分析/发布测试用例。我做的最大的改变是指定mstest.exe的输出文件,然后使用MSTest插件来使用该文件(不允许使用通配符......必须是实际的文件名)。例如,以下是我的自定义构建步骤:

"%PROGRAMFILES%\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /runconfig:LocalTestRun.testrunconfig /testcontainer:MyProject1.Test/bin/Debug/MyProject1.Test.dll  /testcontainer: MyProject2.Test/bin/Debug/MyProject2.Test.dll /resultsfile:TestResults\HudsonJobTestResults.trx

退出0

请注意,“结果文件”是相对于Job的工作区。因此,要解析的MSTest插件的结果文件是:

TestResults\HudsonJobTestResults.trx

就是这样!

答案 3 :(得分:0)

Hudson有Plot Plugin可用于绘制通用数据。如果每个图形有多个数据点,那么配置和使用它不是最简单的插件,但如果您可以解析MS Test输出并为插件生成输入文件,您至少可以绘制失败,成功和总测试。

答案 4 :(得分:0)

出于历史目的,我无法使用Hudson对MS测试结果进行分析,但我至少能够弄清楚如果使用MSBuild和Exec任务,Hudson构建将正确如果任何测试失败,则标记为“失败”。

<Exec Command=""C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\mstest.exe" /testcontainer:"MyAssembly.dll"" />