Как отформатировать файл результатов теста Visual Studio (.trx) в более читаемый формат?

Только что начали использовать встроенные функции модульного тестирования Visual Studio Professional, которые, как я понимаю, используют MS Test для запуска тестов.

Файл .trx, создаваемый тестами, представляет собой xml, но было интересно, есть ли простой способ преобразовать этот файл в более «удобный для менеджера» формат?

Моя конечная цель - иметь возможность автоматизировать модульное тестирование и подготовить красивый документ, показывающий выполнение тестов и то, как они прошли 100% :)

22.08.2008 20:48:03
5 ОТВЕТОВ
РЕШЕНИЕ

Поскольку этот файл является XML, вы можете и должны использовать xsl для преобразования его в другой формат. В блоге IAmUnkown есть запись о декодировании / преобразовании файла trx в html .

Вы также можете использовать .NetSpecExporter от Bekk для создания хороших отчетов. Их продукт также использует XSL, так что вы можете украсть его из загруженного файла и применить его с любым xsl-приложением по вашему желанию.

8
22.08.2008 20:58:42

Если вы используете 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>
3
6.08.2009 00:03:53
Знаете ли вы деятельность в TFS 2010, которая может быть такой?
alice7 30.11.2011 16:24:52
Это не имеет ничего общего с TFS. Вы имеете в виду msbuild? Вы можете создать цель AfterTest и добавить туда функциональность.
Preet Sangha 1.12.2011 04:37:45
@PreetSangha на самом деле, TFS имеет компонент Build, где шаблоны процессов сборки определены в XAML (шаблоны Workflow, так что XOML технически), в котором может быть добавлено «Activity». Вопрос в том, есть ли в «TFS Build» «Activity», которая могла бы сделать это. Таким образом, вопрос alice7 имеет отношение к TFS и не имеет ничего общего с MSBuild. Выполнение этого из MSBuild предполагает использование MSBuild, хотя, скорее всего, это не обязательно, а также вовсе не обязательно является частью шаблона процесса сборки (например, шаблонов процессов CI, которые выполняются для артефактов, созданных шаблонами процессов сборки).
Shaun Wilson 26.02.2016 19:25:16
@ShaunWilson вы предполагаете версию TFS. Этот вопрос был задан / получен ответ в 2008 году о выходе mstest. В TFS 2005/8 имелись определения сборок на основе MSBUILD. Определения сборки рабочих процессов Windows на основе XAML были в TFS 2012/13. Если вы перейдете дальше и теперь посмотрите на последнюю версию TFS 2015, теперь есть определения на основе JSON, но с унаследованной поддержкой старых определений XAML. Хотя вы правы в том, что вы можете добавить настройку в любую версию, чтобы переформатировать эти файлы, в сборке TFS никогда не было ничего такого, что конкретно выполняло бы эту задачу.
Preet Sangha 27.02.2016 20:56:16

Вы также можете попробовать trx2html

3
16.05.2011 10:54:29
Можем ли мы использовать это для TFS 2010 в качестве упражнения?
alice7 30.11.2011 16:24:29
@ alice7 Да, вы можете использовать InvokeProcess в рабочем процессе или создать пользовательское действие, которое я предпочитаю вторым методом, так как у меня есть полный контроль над тем, что я хочу сделать.
Ekk 29.11.2012 03:19:36

Если вам нужно проверить схему перед ее разбором / преобразованием, вы можете найти файл XSD в установочном каталоге Visual Studio (через http://blogs.msdn.com/b/dhopton/archive/2008/06/12/helpful). -internals-of-trx-and-vsmdi-files.aspx ):

Обратите внимание, что схемы XSD доступны со всеми установками Visual Studio в:

% VSINSTALLDIR% \ XML \ Schemas \ vstst.xsd

каталог файлов вместе со многими другими схемами.

2
3.06.2012 15:47:16

Недавно я написал один конвертер trx в html, который основан на python, посмотрите https://github.com/avinash8526/Murgi

0
3.02.2015 12:59:29
Это звучало замечательно, но кажется, что формат .TRX в VS2019 мог быть слегка изменен, потому что инструмент работает не так безупречно, как предполагалось - сгенерированный HTML в целом выглядит правильно, но стили CSS не применялись из-за одного сломан селектор DOM на странице источника.
Sevenate 9.12.2019 23:01:39