2008-08-22 15 views
12

Acabo de comenzar a usar las características integradas de prueba de la unidad de Visual Studio Professional, que según tengo entendido, usa MS Test para ejecutar las pruebas.¿Cómo puedo formatear el archivo de resultados de prueba de Visual Studio (.trx) en un formato más legible?

El archivo .trx que producen las pruebas es xml, pero me preguntaba si había una forma fácil de convertir este archivo en un formato más "compatible con los administradores".

Mi objetivo final es ser capaz de automatizar la unidad de pruebas y ser capaz de producir un documento de aspecto agradable que muestra las pruebas se ejecutan y cómo el 100% de ellos pasa :)

Respuesta

8

Dado que este archivo es XML podría y debería usar xsl para transformarlo a otro formato. El IAmUnkown - blog tiene una entrada sobre decoding/transforming the trx file into html.

También puede usar .NetSpecExporter from Bekk para crear buenos informes. Su producto también usa XSL, por lo que probablemente podría robar del archivo descargado y aplicarlo con la aplicación xsl que desee.

3

Si está usando VS2008 también tengo una respuesta en IAmUnknown. Que actualiza la respuesta anterior que se basa en VS 2005 formato TRX

que aquí hay una hoja de estilo que crea un archivo HTM legible

<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> 
+1

¿Sabe usted una actividad en la TFS 2010, que podría ser así? – alice7

+0

Esto no tiene nada que ver con TFS. ¿Te refieres a msbuild? Puede crear un objetivo AfterTest y agregar la funcionalidad allí. –

+0

@PreetSangha en realidad, TFS tiene un componente de compilación, donde las plantillas de proceso de compilación se definen en XAML (Plantillas de flujo de trabajo, por lo que XOML es técnicamente) en donde se puede agregar una 'Actividad'. La pregunta es si hay una 'Actividad' en 'TFS Build' que podría hacer esto. Por lo tanto, la pregunta de alice7 tiene mucho que ver con TFS y nada que ver con MSBuild. Hacer esto desde MSBuild supone el uso de MSBuild, aunque es probable que no sea necesario y tampoco necesariamente forme parte de una plantilla de proceso de compilación (como las plantillas de proceso de CI que ejecutan contra artefactos creados por las plantillas de proceso de compilación). –

3

se puede también tratar trx2html

+0

¿Podemos usar esto para TFS 2010 como actividad? – alice7

+0

@ alice7 Sí, puede usar InvokeProcess en el flujo de trabajo o crear una actividad personalizada, prefiriendo el segundo método, ya que tengo control total de lo que quiero hacer. – Ekk

Cuestiones relacionadas