How to publish results using dotnet test command

47,961

Solution 1

You can see all the dotnet test options by executing dotnet test --help. One of the options is -l, --logger, which gives some great information:

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

That support link https://aka.ms/vstest-report, has the full information.

So to answer your specific question, you can say

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

To publish the results to a particular directory.

Another option is setting MSBuild properties in your test.csproj:

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

Which tells the logger to put the file in the C:\temp directory.

Solution 2

After stumbling on the same problem (I wanted to publish test results in JUnit format), I ended up finding the JUnitTestLogger NuGet package.

It was a matter of installing it:

dotnet add package JUnitTestLogger --version 1.1.0

And then running the tests as:

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

Solution 3

I couldn't get this to work using the syntax provided in the answer of Eric Erhardt.

Using the TRX Logger examples here I was able to recreate the correct syntax.

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)
Share:
47,961
Raghavendra Bankapur
Author by

Raghavendra Bankapur

Updated on July 09, 2022

Comments

  • Raghavendra Bankapur
    Raghavendra Bankapur almost 2 years

    I have a test project written in dotnet core. This need to publish the results in an XML or HTML format. Is there a way I can publish the results to a particular directory using the same command?
    --result-directory is not working for me

  • Junior Mayhé
    Junior Mayhé about 5 years
    I cannot create a fixed report file, this dotnet test always append a trailing timestamp Results File: C:\myapp\results_2019-04-08_14-24-38-379.trx. I wanted to be C:\myapp\results.trx as expected for dotnet test myapp.csproj --logger trx;LogFileName=C:\temp\results --no-build --no-restore --configuration Release --verbosity q
  • Christian Quirós
    Christian Quirós about 5 years
    Tax, I needed the xunit xml logger and since the "dotnet xunit" command is not longer supported as an external command line tool. Your post led me to find "XunitXml.TestLogger", thanks much, now I am using dotnet test --logger:"xunit;LogFilePath=test_result.xml" to which works for what I needed.
  • Scott Hutchinson
    Scott Hutchinson about 5 years
    @Eric Erhardt, where could I find the documentation for setting the MSBuild properties in your test.csproj? I have looked and looked, but cannot find any info. Thanks
  • Eric Erhardt
    Eric Erhardt about 5 years
    I'm not sure if there is official documentation, I can't find it either. However, I found the properties by looking at how the dotnet test command invokes the project. See github.com/dotnet/cli/blob/…
  • Dominic Jonas
    Dominic Jonas over 4 years
    I always get the following error: No test logging was found with AssemblyQualifiedName, URI, or FriendlyName "junit" Do you know how to fix it?
  • Leo Hinojosa
    Leo Hinojosa over 4 years
    Make sure to run dotnet restore in the environment where you are executing the tests so that the junit assembly is available on the path.
  • sfuqua
    sfuqua over 4 years
    FYI, I had trouble running with LogFileName until I wrapped full option in quotation marks, e.g. -l:"trx;LogFileName=testresult.xml". Also of note: when directory is not specified, the file goes into a TestResults folder.
  • Ethan Wu
    Ethan Wu about 4 years
    works good, thanks for sharing.how to output all unit tests projects under a solution file, seems like the output junit report always be last unit test project.
  • Jim Aho
    Jim Aho over 2 years
    What does trx stand for?
  • Eric Erhardt
    Eric Erhardt over 2 years
    fileinfo.com/extension/trx. I'm not 100% certain, but my guess would be "test result xml".