MSTest.exe 命令行选项

MSTest.exe 是用于运行测试的命令行命令。通过使用此命令的几个选项,可以自定义测试运行。可以将其中的多个选项相互结合使用;实际上,必须将其中一些特定选项与其他选项一起使用,如下面各节中所述。在 MSTest.exe 命令行上,可以按任意顺序指定这些选项。

MSTest.ext 在解释这些选项和为这些选项指定的值时,不区分大小写。

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

常规命令行选项

/testcontainer:[ file name ]

加载一个包含测试的文件。

示例:/testcontainer:tests.dll

有关更多信息,请参见 /testcontainer。

/testmetadata:[ file name ]

加载一个包含测试元数据的文件。有关更多信息,请参见 /testmetadata。

/testlist:[ test list path ]

指定要运行的在元数据文件中指定的测试列表。有关更多信息,请参见 /testlist。

/test:[ test name ]

指定要运行的测试的名称。有关更多信息,请参见 /test 。

/runconfig:[ file name ]

使用指定的运行配置文件。

示例:/runconfig:localtestrun.Testrunconfig

有关更多信息,请参见 /runconfig。

/resultsfile:[ file name ]

将测试运行结果保存到指定的文件中。

示例:/resultsfile:testResults.trx

有关更多信息,请参见 /resultsfile。

/unique

仅当找到任何指定的 /test 的唯一匹配项时才运行测试。有关更多信息,请参见 /unique。

/detail:[ property id ]

指定除了测试结果之外要显示其值的属性(如果有)的名称。有关更多信息,请参见 /detail。

/help

显示 MSTest.exe 用法消息(缩写为:/?/h)。

/nologo

不显示启动版权标志和版权消息。

用于发布测试结果的命令行选项

有关这些选项的更多信息,请参见用于发布测试结果的命令行选项

/publish:[ server name ]

将结果发布到指定服务器的操作存储区中。

/publishresultsfile:[ file name ]

指定要发布的结果文件名。如果未指定结果文件名,则使用当前运行所生成的文件。

/publishbuild:[ build id ]

使用此版本 ID 发布测试结果。

/teamproject:[ team project name ]

指定版本所属的团队项目的名称。

/platform:[ platform ]

指定发布测试结果应采用的版本平台。

/flavor:[ flavor ]

指定发布测试结果应采用的版本风格。

使用 MSTest 选项

以下各节将更详细地对许多 MSTest.exe 选项进行描述。此处不包括用于发布测试结果的选项;有关这些选项的信息,请参见用于发布测试结果的命令行选项

/testcontainer

/testcontainer:[ file name ]

测试容器是一个包含要运行的测试的文件。例如,对于顺序测试,测试容器是定义顺序测试的 .orderedtest 文件。对于单元测试,测试容器是从包含单元测试源文件的测试项目生成的程序集。

备注

对于单元测试,测试容器是包含测试代码的程序集,而不是包含所测试的应用程序代码的程序集。例如,如果解决方案包含一个名为 BankAccount 的项目和一个名为 BankAccountTest 的对应测试项目,则请指定 /testcontainer:BankAccountTest.dll

由于一个测试程序集包含一个测试项目的测试,所以一个解决方案的测试容器数与该解决方案中的测试项目数匹配。

备注

由于测试元数据文件也会列出可以运行的测试,所以一定不能在一个命令行中同时指定 /testcontainer/testmetadata 选项。这种做法不明确,会产生错误。

/testmetadata

/testmetadata:[ file name ]

可以使用 /testmetadata 选项运行多个测试容器中的测试。

使用“测试管理器”窗口创建测试列表时,将为您的解决方案创建测试元数据文件。此文件包含有关“测试管理器”窗口中列出的所有测试的信息。这些测试是解决方案中的所有测试项目中存在的全部测试。

只能通过进行“测试管理器”窗口中所能反映的更改来更改测试元数据文件,如创建或删除测试,或更改测试的属性。

备注

由于测试容器包含可以运行的测试,所以一定不能在一个命令行中同时指定 /testcontainer/testmetadata 选项。这种做法不明确,会产生错误。

测试元数据文件是在解决方案文件夹中创建的 XML 文件。此文件显示在解决方案资源管理器的“解决方案项”节点下。测试元数据文件的扩展名为 .vsmdi,该文件与“测试管理器”窗口关联;也就是说,如果在 Windows 资源管理器中双击某个 .vsmdi 文件,该文件就会打开 Visual Studio 并显示其内容。解决方案测试项目中的所有测试都将显示在“测试管理器”窗口中。

使用 /testmetadata 选项时,建议您使用 /test 选项或 /testlist 选项或者同时使用这两个选项来指示要运行的特定测试。

/testlist

/testlist:[ test list path ]

****** /testlist ****** 选项是在测试元数据文件中指定的要运行的测试列表。若要运行包含在多个测试列表中的测试,请重复使用 /testlist 选项。

备注

仅当同时使用 /testmetadata 选项时,才能使用 /testlist 选项。

可以同时使用 /testlist 选项和 /test 选项。这相当于在“测试管理器”窗口中同时选择测试列表和一个或多个单独测试,然后单击“运行测试”。

/test

/test:[ test name ]

使用 /test 选项指定要运行的各个测试。若要运行多个测试,请重复使用 /test 选项。

备注

可以将 /test 选项与 /testcontainer 选项或 /testmetadata 选项一起使用,但不能同时与这两个选项一起使用。

可以同时使用 /testlist 选项和 /test 选项。这相当于在“测试管理器”窗口中同时选择测试列表和一个或多个单独测试,然后单击“运行测试”。

使用 /test 选项指定的字符串用于匹配测试容器或测试元数据文件中的测试的名称。这意味着,通过使用 /test 的单个值,就可以指定多个测试。例如,指定 /test:ittest 将为名为 DebitTest 和 CreditTest 的测试生成匹配项,因为两个测试名称都包含子字符串“ittest”。

备注

对于使用 /test 选项指定的值,不仅要根据测试的名称而且还要根据该测试的路径(如解决方案资源管理器中所示)进行测试,或者对于单元测试,还要根据其完全限定名称对该值进行测试。

下面是两个用法示例:

单元测试示例:TestProject2 项目中的 UnitTest1.cs 文件包含一个名为 TestMethod1 的单元测试。为 /test 选项指定值“ittest”也将匹配此测试,因为将根据完全限定名称“TestProject2.UnitTest1.TestMethod1”测试该字符串,而字符串“ittest”也在“UnitTest1”中出现了。

一般测试示例:下面的命令行运行指定的一般测试,并在测试结果中显示测试的完整路径。

mstest /testcontainer:"C:\Documents and Settings\<user name>\My Documents\Visual Studio\Projects\TestProject2\TestProject2\generictest1.generic" /test:testproject32\generic

/runconfig

/runconfig:[ file name ]

使用此选项指定运行配置文件。例如:/runconfig:localtestrun.Testrunconfig

还可以通过其他方式指定运行配置文件,如使用 /testmetadata 选项。下面描述控制运行配置文件规范的规则。

  • 如果使用 /runconfig 选项,则无论是否同时使用 /testmetadata 选项,都将使用该选项指定的文件。

  • 如果使用 /testmetadata 选项指向指定活动运行配置文件的元数据文件,并且没有使用 /runconfig 选项,则使用该运行配置文件。

  • 如果不使用 /runconfig 选项,也没有在测试元数据文件中指定运行配置文件,测试运行就会使用默认的运行配置文件。

/resultsfile

/resultsfile:[ file name ]

使用此选项将测试运行结果保存到命名的文件中。例如:/resultsfile:testResults.trx。

/unique

/unique

请将 /unique 选项和 /test 选项一起使用。/unique 选项指示 MSTest.exe 只运行单个测试,该测试的名称与使用 /test 选项提供的值匹配。

例如,测试容器 MyTestProject 包含名为 MethodTest1 和 MethodTest10 的测试。

命令行:

mstest /testcontainer:testproject2.dll /test:MethodTest1

运行 MethodTest1 和 MethodTest10 两个测试,因为“MethodTest1”是“MethodTest10”的子字符串。

但命令行:

mstest /testcontainer:testproject2.dll /test:MethodTest1 /unique

只运行测试 MethodTest1。

/detail

/detail:[ property id ]

此选项用于显示附加的测试用例属性(如果存在)。可以在一个命令行中传递 /detail 选项的多个实例,其中每个实例只有一个属性 ID。/detail 选项的有效属性 ID 如下:

adapter

id

projectrelativepath

computername

isautomated

readonly

debugtrace

link

spoolmessage

description

longtext

stderr

displaytext

name

stdout

duration

outcometext

storage

errormessage

owner

testcategoryid

errorstacktrace

parentexecid

testname

executionid

priority

testtype

groups

projectname

traceinfo

备注

可与 /detail 选项一起使用的实际属性 ID 选择因测试类型而异。因此,此列表只是近似列表。特别需要注意的是:如果使用 Team System testing tools 中所包括的测试类型之外的测试类型,则属性选择将有所不同。若要知道哪些属性 ID 可以使用,请检查测试运行所生成的测试结果文件。有关测试结果文件的更多信息,请参见如何:导出测试结果

如果存在用于指定的测试用例的属性,则其信息将包括在输出结果摘要中。

例如,命令行:

mstest /testcontainer:Errors.dll /detail:testtype

生成以下输出,其中包含测试类型信息:

              ...
              Results                    Top Level Tests
              --------                   -----------------
              Inconclusive               TestProject2.BankAccountTest.CreditTest
              [testtype] = Unit Test
              ...
            

请参见

任务

如何:发布测试结果