Visual Studio单元测试命令行方式之----VSTest.Console.exe命令


前面我们提到,在VS2010以及之前的版本中,使用的是MSTest.exe命令,而在VS2012,VS2013,VS2015版本中,都是VSTest.Console.exe命令了,MSTEST改为兼容方式了。

VSTest.Console.exe 是用于运行测试的命令行命令。 在 VSTest.Console.exe 命令行上,可以按任意顺序指定多个选项。 这些选项稍后将在本主题中的“常规命令行选项”表中列出。

vstest.console.exe 说明你按照不区分大小写的方式指定这些选项和值。

打开方式:开始-->Developer Command Prompt for VS 2017,则打开vs的命令行工具窗口,输入where VSTest.Console命令,可以看到命令的路径是:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe

下表列出了 VSTest.Console.exe 的所有选项以及对应的简短说明。 在命令行上键入 VSTest.Console/? 可以看到类似的摘要。

说明

Visual Studio 2012 中的 MSTest 适配器还在旧模式下工作(等效于使用 mstest.exe 运行测试)以实现兼容性。 在旧模式下,它无法利用新的 VS11 功能 TestCaseFilter。 在以下情况下,适配器可以切换到旧模式:指定 .testsettings 文件、在 .runsettings 文件中将 forcelegacymode 设置为 true 或使用类似 HostType 这样的特性。

说明

若要在基于 ARM 体系结构的计算机上运行自动测试,你必须使用 VSTest.Console.exe。

  官方最新文档:https://docs.microsoft.com/zh-cn/visualstudio/test/vstest-console-options

常规命令行选项

 

/Settings:[ 文件名 ]

使用其他设置(如数据收集器)运行测试。

示例:/Settings:Local.RunSettings

/Tests:[ 测试名称 ]

运行具有与提供的值匹配的名称的测试。

若要提供多个值,请使用逗号将这些值分隔。

示例:/Tests:TestMethod1,testMethod2

警告 /Tests 命令行选项不能与 /TestCaseFilter 命令行选项一起使用。

/Enablecodecoverage

在测试运行中启用数据诊断适配器 CodeCoverage。

如果未使用设置文件指定设置,则将使用默认设置。

/InIsolation

在隔离的进程中运行测试。

虽然这使得 vstest.console.exe 进程不太可能在测试出错时停止,但测试的运行速度会较慢。

/UseVsixExtensions

这使得 vstest.console.exe 进程使用或跳过在测试运行中安装的 VSIX 扩展(如果有)。

示例:/UseVsixExtensions:true

/Platform:[ 平台类型 ]

将用来执行测试的目标平台体系结构。

有效值为 x86、x64 和 ARM。

/Framework: [Framework 版本 ]

要用于测试执行的目标 .NET Framework 版本。

有效值为 Framework35、Framework40 和 Framework45。

示例:/Framework:framework40

/TestCaseFilter:[ 表达式]

运行与给定表达式匹配的测试。

的格式为 =[|]。

示例:/TestCaseFilter:"Priority=1"

示例:/TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"

警告 /TestCaseFilter 命令行选项不能与 /Tests 命令行选项一起使用。

/Logger:[uri/friendlyname ]

为测试结果指定一个记录器。

示例:若要将结果记录到 Visual Studio 测试结果文件 (TRX),请使用 /Logger:trx

示例:若要将测试结果发布到 Team Foundation Server,请使用 TfsPublisher:

/logger:TfsPublisher;

Collection=;

BuildName=;

TeamProject=;

[;Platform=]

[;Flavor=]

[;RunTitle=]</strong></p> <span class="mtps-th" style="display: table-cell; padding: 4pt; background-color: rgba(237, 237, 237, 1)"><strong>说明</strong></span> <span class="mtps-cell" style="display: table-cell; padding: 4pt"><span id="mt52" class="sentence">TfsPublisher 记录器需要 Visual Studio 2012 和 [Visual Studio 2012.1] 或更高版本。</span></span> </td> </tr> <tr> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><span id="mt53" class="sentence"><strong>/ListTests:[</strong> <span class="parameter" style="font-style: italic">文件名</span> <strong>]</strong></span></p> </td> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><span id="mt54" class="sentence">列出给定测试容器中的已发现的测试。</span></p> </td> </tr> <tr> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><strong>/ListDiscoverers</strong></p> </td> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><span id="mt56" class="sentence">列出已安装的测试发现器。</span></p> </td> </tr> <tr> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><strong>/ListExecutors</strong></p> </td> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><span id="mt58" class="sentence">列出已安装的测试执行器。</span></p> </td> </tr> <tr> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><strong>/ListLoggers</strong></p> </td> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><span id="mt60" class="sentence">列出已安装的测试记录器。</span></p> </td> </tr> <tr> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><strong>/ListSettingsProviders</strong></p> </td> <td style="font-family: "Microsoft YaHei UI", "Microsoft YaHei", SimSun, "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; padding: 10px 8px; color: rgba(42, 42, 42, 1); vertical-align: top; border: 1px solid rgba(187, 187, 187, 1)"> <p style="margin-top: 0; margin-bottom: 0; padding-bottom: 0; line-height: 18px"><span id="mt62" class="sentence">列出已安装的测试设置提供程序。</span></p> </td> </tr> </tbody> </table> <h2 class="LW_CollapsibleArea_TitleDiv" style="font-family: "Segoe UI Semibold", "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px; font-weight: normal; margin: 0; padding-bottom: 5px; padding-top: 20px"></p> <p></p> <p>但怎样在没有安装Visual Studio的机器上或命令行下执行单元测试,以及 怎样导出报告的问题一直没有解决。</p> <p>现找到方案如下:</p> <p>1. VS提供了命令下执行单元测试的工具:vstest.console.exe。</p> <p>2. trx2html等工具可以把生成的XML报告转成可读的HTML报告。</p> <p>使用方法:</p> <h2><strong>1.拷贝相关文件、工具到目标机器</strong></h2> <blockquote> <p>a)编译出的单元测试DLL</p> <p>b)程序运行依赖库。(可以在下面目录中找到)</p> <p>   --“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist”</p> <p>c)单元测试工具目录TestWindow</p> <p>   --“C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow”</p> </blockquote> <h2><strong>2. 执行单元测试命令</strong></h2> <blockquote> <p>执行前需要用Depends查看编译出的依赖DLL是否具备,否则会出现运行失败。</p> <p>控制台或BAT文件中运行命令:“.\TestWindow\vstest.console.exe <em>UnitTest_Simple.dll</em> <strong>/logger:trx</strong>”</p> <p>  --   <em>UnitTest_Simple.dll</em> 为编译出的单元测试DLL。</p> <p>  --   /logger:trx  此参数是为了在TestResults目录输出XML格式的 *.trx测试结果。</p> <p>        </p> </blockquote> <h2><strong>   3. 转换测试结果 trx文件 为可读的HTML</strong></h2> <blockquote> <p>TRX为XML文件,可以使用自定义的XSLT样式表来显示出来。</p> <p>网上也有很多现在的教程、工具,如: trx2html, trxtohtml 等。</p> <p>http://trx2html.codeplex.com/</p> <p>可以下载源码,修改样式表XSLT符合自己的报告风格。</p> <p></p> </blockquote> <p>出处:https://www.cnblogs.com/herryzz/p/4733054.html</p> </div> <!--conend--> <div class="p-2"></div> <div class="arcinfo my-3 fs-7 text-center"> <a href='/t/etagid194-0.html' class='tagbtn' target='_blank'>软件测试</a> </div> <div class="p-2"></div> </div> <div class="p-2"></div> <!--xg--> <div class="lbox p-4 shadow-sm rounded-3"> <div class="boxtitle"><h2 class="fs-4">相关</h2></div> <hr> <div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-521868.html">《Google软件测试之道》简介</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-528769.html">软件测试之秘籍篇——测试分类【转】</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-515870.html">软件测试之秘籍篇——测试分类【转】</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-507921.html">软件测试___接口测试面试题____接口超时场景设置和接口超时处理</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-507769.html">软件测试 ____杭州多测师肖sir___面试题模板收集</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-491678.html">软件测试基础知识题目</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-457570.html">《软件测试经验与教训》内容摘录</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-454516.html">软件测试实例分析</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-432618.html">软件测试第一天——导学篇</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-426731.html">软件测试基础(六)用例设计方法之场景法</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-359871.html">软件测试02</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div><div class="row g-0 py-2 border-bottom align-items-center"> <div class="col-7 col-lg-11 border-lg-end"> <h3 class="fs-6 mb-0 mb-lg-2"><a href="/a/1-354541.html">软件测试理论</a></h3> <div class="ltag fs-8 d-none d-lg-block"> </div> </div> </div> <!----> <!----> </div> <!--xgend--> </div> <div class="col-lg-3 col-12 p-0 ps-lg-2"> <!--box--> <!--boxend--> <!--<div class="p-2"></div>--> <!--box--> <div class="lbox p-4 shadow-sm rounded-3"> <div class="boxtitle pb-2"><h2 class="fs-4"><a href="#">标签</a></h2></div> <div class="clearfix"></div> <ul class="m-0 p-0 fs-7 r-tag"> </ul> <div class="clearfix"></div> </div> <!--box end--> </div> </div> </div> </main> <div class="p-2"></div> <footer> <div class="container-fluid p-0 bg-black"> <div class="container p-0 fs-8"> <p class="text-center m-0 py-2 text-white-50">一品网 <a class="text-white-50" href="https://beian.miit.gov.cn/" target="_blank">冀ICP备14022925号-6</a></p> </div> </div> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?6e3dd49b5f14d985cc4c6bdb9248f52b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </footer> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"></script> </body> </html>