How to publish results using dotnet test command
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)
Raghavendra Bankapur
Updated on July 09, 2022Comments
-
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é about 5 yearsI 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 beC:\myapp\results.trx
as expected fordotnet test myapp.csproj --logger trx;LogFileName=C:\temp\results --no-build --no-restore --configuration Release --verbosity q
-
Christian Quirós about 5 yearsTax, 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 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 about 5 yearsI'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 over 4 yearsI 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 over 4 yearsMake 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 over 4 yearsFYI, 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 aTestResults
folder. -
Ethan Wu about 4 yearsworks 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 over 2 yearsWhat does trx stand for?
-
Eric Erhardt over 2 yearsfileinfo.com/extension/trx. I'm not 100% certain, but my guess would be "test result xml".