Unit testing 将Hudson与MS测试集成?

Unit testing 将Hudson与MS测试集成?,unit-testing,continuous-integration,hudson,mstest,Unit Testing,Continuous Integration,Hudson,Mstest,是否可以与MS测试集成 我现在正在Hudson的开发机器上设置一个较小的CI服务器,这样我就可以得到一些统计数据(即和编译器警告)。当然,如果它可以运行我的单元测试并显示它们的输出,那也很好 到目前为止,我已经向Hudson添加了以下批处理任务,这使它能够正确地运行测试 "%PROGRAMFILES%\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /runconfig:LocalTestRun.testrunconfig /testcon

是否可以与MS测试集成

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

到目前为止,我已经向Hudson添加了以下批处理任务,这使它能够正确地运行测试

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

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

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

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

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

我一直想写这篇文章作为指导并开发一个插件,但我还没有找到时间。我知道这个问题由来已久,但我确信其他人也有同样的想法,所以就在这里

在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”

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

您可以从下载MSBuild-to-NUnit.xslt,并从microsoft获取msxsl.exe,也可以获取包含xslt和exe的MsBuildNunit文件夹的压缩副本

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

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

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


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

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

我已经能够使用“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

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

TestResults\HudsonJobTestResults.trx

就这样

谢谢你的提示。这听起来像是最后的手段-使用XSLT或其他工具将.TRX(XML)转换为JUnit/NUnit格式可能会更容易。很好,我必须检查一下,看看它是否添加了我的解决方案所不具备的任何功能。哇,我怎么会错过这一发布呢?我想我明天会尝试一下。我想这个插件现在可以满足我的需求了。如果有人需要更复杂的东西,那么试试Allen的建议。这个插件没有多大用处,因为我们通常不提交
trx
文件。我认为CI服务器负责运行测试,从而自行生成trx。您不需要提交trx文件。只需配置插件就可以知道测试完成后它会在哪里。如果trx还不存在,您可能会在首次配置时收到警告。这看起来很棒,谢谢!明天我可能会尝试一下,这取决于这个新的MSTest插件提供了什么。我刚刚发现MSTest插件不支持解析多个trx文件,所以这是这个解决方案的优势。Jenkins MSTest插件支持多个trx文件,现在:也请查看
TestResults\HudsonJobTestResults.trx