MSTest.exe 命令行选项

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

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

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

常规命令行选项

/testcontainer:[文件名]

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

示例:/testcontainer:tests.dll

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

/testmetadata:[文件名]

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

/testlist:[测试列表路径]

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

/category:[测试类别筛选器]

指定并筛选要运行的测试类别。 有关更多信息,请参见 /category。

/test:[测试名称]

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

/noisolation

在 MSTest.exe 进程内运行测试。 此选项可以提高测试运行速度,但会增加 MSTest.exe 进程的风险。

/testsettings: [文件名]

使用指定的测试设置文件。

示例:/testsettings:Local.Testsettings

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

/runconfig:[文件名]

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

示例:/runconfig:localtestrun.Testrunconfig

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

注意注意
保留此命令行选项是为了与以前版本的 Microsoft Visual Studio 2010 兼容。测试运行配置已被 Visual Studio 2010 旗舰版中的测试设置替换。

/resultsfile:[文件名]

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

示例:/resultsfile:testResults.trx

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

/unique

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

/detail:[属性 ID]

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

/help

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

/nologo

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

/usestderr

使用标准错误输出错误信息。

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

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

/publish:[服务器名称]

将结果发布到指定服务器的团队项目集合的数据库中。

/publishresultsfile:[文件名]

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

/publishbuild:[版本 ID]

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

/teamproject:[团队项目名称]

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

/platform:[平台]

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

/flavor:[Flavor — 风格]

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

使用 MSTest 选项

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

/testcontainer

/testcontainer:[文件名]

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

提示

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

提示

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

/testmetadata

/testmetadata:[文件名]

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

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

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

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

提示

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

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

/testlist

/testlist:[测试列表路径]

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

提示

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

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

/category

/category:[测试类别筛选器]

使用 /category 选项指定要运行的测试类别。

提示

必须使用 /testcontainer 选项才能使用 /category 选项。

每个命令行只能使用一次 /category 选项,但是您可以使用测试类别筛选器指定多个测试类别。 测试类别筛选器包含一个或多个测试类别名称,这些名称由逻辑运算符“&”、“|”、“!”、“&!”分隔。 逻辑运算符“&”和“|”不能一起用于创建测试类别筛选器。

例如:

  • /category:group1 运行属于测试类别“group1”的测试。

  • /category:"group1&group2" 运行同时属于测试类别“group1”和“group2”的测试。不会运行只属于其中一个指定测试类别的测试。

  • /category:"group1|group2" 运行属于测试类别“group1”或“group2”的测试。 还会运行同时属于两个测试类别的测试。

  • /category:"group1&!group2" 运行属于测试类别“group1”但不属于测试类别“group2”的测试。不会运行同时属于测试类别“group1”和“group2”的测试。

    提示

    如果筛选器只包含单个类别(如 /category:group1),则不必将筛选器括在引号中。 但是,如果筛选器引用多个类别(如 /category:"group1&group2"),则必须将筛选器括在引号中。

/test

/test:[测试名称]

使用 /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

/noisolation

/noisolation

使用此选项在 MSTest.exe 进程内运行测试。 使用此选项不会对测试运行配置带来任何其他更改。 此选项的目的是提高测试运行速度。 但是,它会增加将测试运行作为一个整体的风险,因为测试代码引发的未经处理的异常可能会导致 MSTest.exe 进程崩溃。

/testsettings

/testsettings:[文件名]

使用此选项指定测试设置文件。 例如:/testsettings:local.Testsettings

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

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

  • 如果使用 /testmetadata 选项指向一个指定活动测试设置文件的元数据文件,并且没有使用 /testsettings 选项,则使用该测试设置文件。

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

    提示

    有关测试设置文件的更多信息,请参见创建作为测试计划一部分的自动测试的测试设置

/runconfig

/runconfig:[文件名]

注意   保留此命令行选项是为了与以前版本的 Microsoft Visual Studio 2010 兼容。 测试运行配置已被 Visual Studio 2010 旗舰版中的测试设置替换。

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

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

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

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

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

/resultsfile

/resultsfile:[文件名]

使用此选项将测试运行结果保存到命名的文件中。 例如:/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

给出一个错误,指出此测试名称没有唯一匹配项。 通过使用列在测试的“属性”视图中的测试 ID,可以唯一标识测试名称。

/usestderr

/usestderr

使用此选项将导致在标准错误中写入以下信息:

  • 测试的结果为“已失败”、“已中止”、“错误”、“超时”、“不可运行”或“没有执行”。

  • 运行级错误。

  • 分析命令行参数时的错误。

  • 测试运行具有失败的结果时的运行摘要。

如果不使用此选项,所有输出都将发送到标准输出。

/detail

/detail:[属性 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 选择因测试类型而异。 因此,此列表只是近似列表。 特别是,如果您使用自定义测试类型,则属性的选择将有所不同。 若要知道哪些属性 ID 可以使用,请检查测试运行所生成的测试结果文件。 有关测试结果文件的更多信息,请参见 如何:在 Visual Studio 中保存和打开测试结果

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

例如,命令行:

mstest /testcontainer:Errors.dll /detail:testtype

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

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

请参见

概念

查看测试结果

从命令行运行自动测试