May be a silly question, but does anybody know how to specify the output filename of a VSTEST.Console.exe run? My command line is as follows:
vstest.console.exe [assembly] /logger:trx
At the end of the run, the following comes up in the console:
ResultsFile: somepath\TestResults\{username}_{workstation} {timestamp}.trx
I tried using the .runsettings file to specify the output location, but that only seems to control the output directory, but not the output file. Have not found anything else that would seem to control it.
I want to parse the TRX file and generate a report out of it (this already works, but if I can't specify the output path of the TRX file, I won't know where to pick it up from in the scripts!)
I have to be missing something here...
This has worked for me for testing .net core I haven't tried it with .net framework:
Maybe its a new thing
Update: This works for .net framework projects too using the latest Test platform and vstest.console.exe
I had this issue as well. I decided to write a MSBuild target that executes vstest.console via the EXEC task, handling all its outputs, including the coverage results.
Basically, I captured the vstest output and used a regex to capture the *.trx and *.coverage portion of the output, which turned out to be really easy. Plus, it removes the TestResults directory to keep the workspace nice and clean.
In the end, you will get the *.trx file and the *.coverage file (optionally).
The script may look a bit complex, but it was necessary to fit our needs. I tried to clean it up a bit. Hope this helps.
EDIT: See @AnaFranco's answer - apparently since VS2017 the file name can be configured like so:
I'll leave the old answer for posterity and pre-2017 versions.
Nope, you're not missing anything. The TRX logger doesn't support any parameters (unlike the TFS publisher logger).
The logger assembly is located in
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions\Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll"
. If you check it out in your favorite .NET decompiler, you'll see the methodTrxLogger.GetTrxFileName
. It uses some basic knowledge about the current test run to produce the mangled name of form{username}_{workstation} {timestamp}.trx
and is in no appreciable way configurable.As far as I can tell, the TRX file is created in the
TestResults\
folder under the current working directory unless otherwise configured. What you can do is:.trx
file using your favorite recursive file search method and you're doneAt least that is what I do in our build (MSBuild, sob):
I.e, gather all
.trx
files under the current directory and stuff them into the@(TestResult)
item group for further processing.Apparently, you can specify a directory where to put the *.trx file (not of the file itself though). This is, however, done via .runsettings file rather than via command line.
Excerpt from Bhuvaneshwari's blog: