Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 为vstest.console.exe指定结果文件名_Visual Studio 2012_Vstest - Fatal编程技术网

Visual studio 2012 为vstest.console.exe指定结果文件名

Visual studio 2012 为vstest.console.exe指定结果文件名,visual-studio-2012,vstest,Visual Studio 2012,Vstest,这可能是个愚蠢的问题,但是有人知道如何指定VSTEST.Console.exe运行的输出文件名?我的命令行如下: vstest.console.exe [assembly] /logger:trx 在运行结束时,控制台中出现以下内容: ResultsFile: somepath\TestResults\{username}_{workstation} {timestamp}.trx 我尝试使用.runsettings文件指定输出位置,但这似乎只能控制输出目录,而不能控制输出文件。没有发现

这可能是个愚蠢的问题,但是有人知道如何指定VSTEST.Console.exe运行的输出文件名?我的命令行如下:

 vstest.console.exe [assembly] /logger:trx
在运行结束时,控制台中出现以下内容:

 ResultsFile: somepath\TestResults\{username}_{workstation} {timestamp}.trx
我尝试使用.runsettings文件指定输出位置,但这似乎只能控制输出目录,而不能控制输出文件。没有发现任何其他似乎可以控制它的东西

我想解析TRX文件并从中生成一个报告(这已经起作用了,但是如果我不能指定TRX文件的输出路径,我就不知道在脚本中从哪里获取它!)


我必须在这里遗漏一些东西…

编辑:见@AnaFranco的答案-显然,自VS2017以来,文件名可以这样配置:

vstest.console.exe [assembly] /logger:trx;LogFileName=[filename].trx
我将把旧答案留给后人和2017年以前的版本


不,你没有遗漏任何东西。TRX记录器不支持任何参数(与TFS publisher记录器不同)

记录器程序集位于
“C:\Program Files(x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions\Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.dll”
中。如果您在最喜欢的.NET反编译器中查看它,您将看到方法
TrxLogger.GetTrxFileName
。它使用一些关于当前测试运行的基本知识来生成表单
{username}{workstation}{timestamp}.trx的损坏名称,并且没有明显的可配置性

据我所知,TRX文件是在当前工作目录下的
TestResults\
文件夹中创建的,除非另有配置。您可以做的是:

  • 创建一个新的临时文件夹
  • 将当前目录更改为它
  • 运行测试运行程序
  • 使用您最喜欢的递归文件搜索方法扫描文件夹中的结果
    .trx
    文件,就完成了
至少我在构建(MSBuild,sob)中就是这么做的:



也就是说,收集当前目录下的所有
.trx
文件,并将它们填充到
@(TestResult)
项目组中进行进一步处理。

我也有这个问题。我决定编写一个MSBuild目标,通过EXEC任务执行vstest.console,处理其所有输出,包括覆盖率结果

基本上,我捕获了vstest输出,并使用正则表达式捕获了输出的*.trx和*.coverage部分,这非常简单。另外,它删除了TestResults目录,以保持工作区整洁

最后,您将获得*.trx文件和*.coverage文件(可选)

脚本可能看起来有点复杂,但它是符合我们需要的。我试着把它清理一下。 希望这有帮助


人工制品
测试结果
C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
错误的
符合事实的
符合事实的
框架45
trx
0
(?=(结果文件:).*.trx
(?=(附件:;).*保险范围
$([System.Text.RegularExpressions.Regex]::匹配($(OutputOxec),$(ResultsFileRegExpatern)))
$([System.Text.RegularExpressions.Regex]::匹配($(OutputOfExec),$(coveragefileregexpatern)))

显然,您可以指定一个目录来放置*.trx文件(但不是文件本身)。但是,这是通过.runsettings文件而不是通过命令行完成的

摘录自:

如果需要覆盖结果的默认位置,则用户需要 使用runsettings文件传递此值

例如:

其中的上下文 .runsettings文件如下所示:


c:\

这对我测试.net core很有效,我还没有用.net framework尝试过:

vstest.console.exe [assembly] /logger:trx;LogFileName=[filename].trx
也许这是新事物


更新:这也适用于.net framework项目,使用最新的测试平台和vstest.console.exe

我将其与.runsettings文件结合使用,将trx文件放入一个已知的临时文件夹中,然后用我想要的名称将其复制到我想要的位置。谢谢不过,请女士谈谈你的半生不熟的计划。这正是我到目前为止所做的事。MS不允许您在命令行中指定报表名称,这是非常糟糕的。有Powershell脚本可以在其中提取trx文件,以避免硬编码的visual studio路径。您可以执行以下操作<代码>$(注册表:HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\VisualStudio\12。0@ShellFolder)$([System.IO.Path]::合并($(VisualStudioFolder)”、“Common7”、“IDE”、“CommonExtensions”、“Microsoft”、“TestWindow”)\$(VsTestFolder)vstest.console.exe
我必须使用
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config
更具体地说,这只在Visual Studio 2017中开始工作。对于那些在Visual Studio之外运行vstest.console.exe的用户,此功能从vstest版本开始可用
Mstest.exe /testcontainer:abc.dll /results:C:\Results.trx 

Vstest.console.exe abc.dll /settings:output.runsettings 
<?xml version="1.0" encoding="UTF-8"?> 
<RunSettings> 
  <RunConfiguration>
   <ResultsDirectory>c:\</ResultsDirectory>
  </RunConfiguration>
 </RunSettings>
vstest.console.exe [assembly] /logger:trx;LogFileName=[filename].trx