如何将Visual Studio测试结果文件(.trx)格式化为更易读的格式?
时间:2020-03-05 18:42:15 来源:igfitidea点击:
刚刚开始使用Visual Studio Professional的内置单元测试功能,据我了解,该功能使用MS Test来运行测试。
测试生成的.trx文件是xml,但是想知道是否有一种简单的方法可以将该文件转换为更"易于管理的"格式?
我的最终目标是能够使单元测试自动化,并能够生成外观漂亮的文档,以显示测试的运行以及其中100%通过测试的方式:)
解决方案
回答
由于此文件是XML,因此我们可以并且应该使用xsl将其转换为另一种格式。 IAmUnkown博客中有一个有关将trx文件解码/转换为html的条目。
我们还可以使用Bekk中的.NetSpecExporter创建漂亮的报告。他们的产品还使用XSL,因此我们可以从下载的文件中窃取它,然后将其应用到所需的任何xsl应用程序中。
回答
如果我们使用的是VS2008,那么我对IAmUnknown也有答案。该更新基于VS 2005 trx格式的上述答案
这是一个创建可读的HTM文件的样式表
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://microsoft.com/schemas/VisualStudio/TeamTest/2006" > <xsl:template match="/"> <html> <head> <style type="text/css"> h2 {color: sienna} p {margin-left: 20px} .resultsHdrRow { font-face: arial; padding: 5px } .resultsRow { font-face: arial; padding: 5px } </style> </head> <body> <h2>Test Results</h2> <h3>Summary</h3> <ul> <li>Tests found: <xsl:value-of select="t:TestRun/t:ResultSummary/t:Counters/@total"/></li> <li>Tests executed: <xsl:value-of select="t:TestRun/t:ResultSummary/t:Counters/@executed"/></li> <li>Tests passed: <xsl:value-of select="t:TestRun/t:ResultSummary/t:Counters/@passed"/></li> <li>Tests Failed: <xsl:value-of select="t:TestRun/t:ResultSummary/t:Counters/@failed"/></li> </ul> <table border="1" width="80%" > <tr class="resultsHdrRow"> <th align="left">Test</th> <th align="left">Outcome</th> </tr> <xsl:for-each select="/t:TestRun/t:Results/t:UnitTestResult" > <tr valign="top" class="resultsRow"> <td width='30%'><xsl:value-of select="@testName"/></td> <td width='70%'> <Div>Message: <xsl:value-of select="t:Output/t:ErrorInfo/t:Message"/></Div> <br/> <Div>Stack: <xsl:value-of select="t:Output/t:ErrorInfo/t:StackTrace"/></Div> <br/> <Div>Console: <xsl:value-of select="t:Output/t:StdOut"/></Div> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>