Como formato o arquivo de resultados do teste do Visual Studio (.trx) em um formato mais legível?
-
09-06-2019 - |
Pergunta
Acabei de começar a usar os recursos integrados de teste de unidade do Visual Studio Professional, que, pelo que entendi, usa o MS Test para executar os testes.
O arquivo .trx que os testes produzem é xml, mas queria saber se existe uma maneira fácil de converter esse arquivo em um formato mais "amigável ao gerenciador"?
Meu objetivo final é ser capaz de automatizar o teste de unidade e produzir um documento bonito que mostre os testes executados e como 100% deles foram aprovados :)
Solução
Como este arquivo é XML você pode e deve usar xsl para transformá-lo em outro formato.O IAmUnkown - o blog tem uma entrada sobre decodificando/transformando o arquivo trx em html.
Você também pode usar .NetSpecExporter de Bekk para criar bons relatórios.O produto deles também usa XSL, então você provavelmente poderia roubar a partir do arquivo baixado e aplique-o com qualquer aplicativo xsl desejado.
Outras dicas
Se você estiver usando o VS2008, também tenho uma resposta em IAmUnknown.O que atualiza a resposta acima, baseada no formato trx do VS 2005
aqui está uma folha de estilo que cria um arquivo HTM legível
<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>
você também pode tentar trx2html
Se precisar validar o esquema antes de analisá-lo/transformá-lo, você poderá encontrar o arquivo XSD no diretório de instalação do Visual Studio (via http://blogs.msdn.com/b/dhopton/archive/2008/06/12/helpful-internals-of-trx-and-vsmdi-files.aspx):
Observe que os esquemas XSD estão disponíveis com todas as instalações do Visual Studio no:
%VSINSTALLDIR%\xml\Schemas\vstst.xsd
Diretório de arquivos, juntamente com muitos outros esquemas.
Recentemente eu escrevi um conversor trx para html que é baseado em python, dê uma olhadahttps://github.com/avinash8526/Murgi