19

是否可以将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 测试结果进行分析。有谁知道生成的 TRX 文件是否MSTest.exe可以转换为JUnitNUnit结果格式(因为 Hudson 支持这些格式),或者是否有任何其他方法可以将 MS Test 单元测试与 Hudson 集成?

4

5 回答 5

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 测试结果报告”框并为“测试报告 XMLs”输入

TestResults/*.xml

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

您可以从此处下载 MSBuild-to-NUnit.xslt 并从此处从 microsoft 获取 msxsl.exe, 或者您可以在此处获取包含 xslt 和 exeMsBuildNunit 文件夹的压缩副本

运行时,它调用 MSTest.exe 运行测试并以 microsofts trx (xml) 格式输出格式。然后它使用 xslt 和 trx 调用 msxsl.exe 并将其转换为 nunits xml 格式。在构建结束时,Hudson 将其作为任何其他 Nunit 测试结果进行选择,您就可以开始了。

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

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

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

于 2009-02-04T16:22:40.907 回答
16

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

于 2009-02-10T07:11:44.083 回答
2

我已经能够使用“hangy's”命令行的变体和 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

就是这样!

于 2009-07-06T17:42:27.133 回答
0

Hudson 有一个绘图插件,可用于绘制通用数据。如果每个图表有多个数据点,这不是最容易配置和使用的插件,但是如果您可以解析 MS 测试输出并为插件生成输入文件,您至少可以绘制失败、成功和总测试。

于 2008-12-09T13:36:10.227 回答
0

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

<Exec Command=""C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\mstest.exe" /testcontainer:"MyAssembly.dll"" />
于 2009-01-20T01:06:16.363 回答