Как опубликовать результаты с помощью команды тестирования дотнет

У меня есть тестовый проект, написанный на ядре dotnet. Это необходимо опубликовать результаты в формате XML или HTML. Есть ли способ, которым я могу опубликовать результаты в определенном каталоге с помощью той же команды?- каталог результатов не работает для меня

5 ответов

Решение

Вы можете увидеть все dotnet test варианты выполнения dotnet test --help, Один из вариантов -l, --logger, который дает отличную информацию:

Specify a logger for test results.
Examples:
Log in trx format using a unqiue file name: --logger trx
Log in trx format using the specified file name: --logger "trx;LogFileName=<TestResults.trx>"
More info on logger arguments support:https://aka.ms/vstest-report

Та ссылка поддержки https://aka.ms/vstest-report, содержит полную информацию.

Таким образом, чтобы ответить на ваш конкретный вопрос, вы можете сказать,

dotnet test -l:trx;LogFileName=C:\temp\TestOutput.xml

Опубликовать результаты в определенном каталоге.

Другой вариант - установить свойства MSBuild в вашем test.csproj:

<PropertyGroup>
  <VSTestLogger>trx</VSTestLogger>
  <VSTestResultsDirectory>C:\temp</VSTestResultsDirectory>
</PropertyGroup>

Что говорит регистратору поместить файл в C:\temp каталог.

Споткнувшись о той же проблеме (я хотел опубликовать результаты тестов в формате JUnit), я в итоге нашел пакет JUnitTestLogger NuGet.

Это был вопрос установки:

dotnet add package JUnitTestLogger --version 1.1.0

А затем запустить тесты как:

dotnet test --logger "junit;LogFilePath=path/to/your/test/results.xml"

Я не мог заставить это работать, используя синтаксис, указанный в ответе Эрика Эрхардта .

Используя здесь примеры TRX Logger , я смог воссоздать правильный синтаксис.

dotnet test --logger:"trx;LogFileName=C:\Temp\TestResults.xml" MyLibraryToTest.dll

      $ dotnet test --logger:"trx;LogFileName=C:\Temp\TestResults.xml" MyLibraryToTest.dll
Microsoft (R) Test Execution Command Line Tool Version 16.8.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
Starting ChromeDriver 87.0.4280.88 (89e2380a3e36c3464b5dd1302349b1382549290d-refs/branch-heads/4280@{#1761}) on port 51459
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Results File: C:\Temp\TestResults.xml

Passed!  - Failed:     0, Passed:     1, Skipped:     0, Total:     1, Duration: 7 s - MyLibraryToTest.dll (net5.0)

Сегодня у меня был успех с пакетом nuget JunitXml.TestLogger, версия 3.0.114: https://www.nuget.org/packages/JunitXml.TestLogger/

Чтобы добавить в качестве зависимости:
dotnet add package JunitXml.TestLogger --version 3.0.114

После добавления в качестве зависимости это был просто вопрос выполнения:
dotnet test --logger:"junit;LogFilePath=dotnet-test-result.xml"

На сегодняшний день JunitXml.TestLogger имеет в четыре раза больше звезд, чем пакет nuget JUnitTestLogger, упомянутый в другом ответе. JunitXml.TestLogger активно поддерживается, тогда как JUnitTestLogger не трогался в течение 2 лет.

В дополнение к ответу Эрика, вы также можете запустить dotnet xunit -xml output.xml

$ dotnet xunit --help
  ...
  Result formats: (optional, choose one or more)
  -xml <filename>        : output results to xUnit.net v2 XML file
  -xmlv1 <filename>      : [net4x only] output results to xUnit.net v1 XML file
  -nunit <filename>      : [net4x only] output results to NUnit v2.5 XML file
  -html <filename>       : [net4x only] output results to HTML file
...

http://xunit.github.io/docs/getting-started-dotnet-core

Другие вопросы по тегам