以下各节将更详细地对许多 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 选项。 将运行测试列表中的所有顺序测试。
说明 |
---|
仅当同时使用 /testlist 选项时,才能使用 /testmetadata 选项。 |
可以同时使用 /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 选项,也没有在测试元数据文件中指定测试设置文件,测试运行就会使用默认的测试设置文件。
说明 |
---|
有关测试设置文件的详细信息,请参阅使用 Microsoft 测试管理器为自动系统测试创建测试设置。 |
/runconfig
/runconfig:[文件名]
注意 保留此命令行选项是为了与以前版本的 Visual Studio 兼容。 测试运行配置已由 Visual Studio 高级专业版中的测试设置替换。
使用此选项指定运行配置文件。 例如:/runconfig:localtestrun.Testrunconfig
还可以通过其他方式指定运行配置文件,如使用 /testmetadata 选项。 下面描述控制运行配置文件指定的规则。
-
如果使用 /runconfig 选项,则会使用该选项指定的文件,无论是否同时使用了 /testmetadata 选项。
-
如果使用 /testmetadata 选项指向指定活动运行配置文件的元数据文件,并且没有使用 /runconfig 选项,则使用该运行配置文件。
-
如果不使用 /runconfig 选项,也没有在测试元数据文件中指定运行配置文件,测试运行就会使用默认的运行配置文件。
/resultsfile
/resultsfile:[文件名]
使用此选项将测试运行结果保存到命名的文件中。 例如:/resultsfile:testResults.trx。
/usestderr
/usestderr
使用此选项将导致在标准错误中写入以下信息:
如果不使用此选项,所有输出都将发送到标准输出。
/detail
/detail:[属性 ID]
此选项用于显示附加的测试用例属性(如果存在)。 可以在一个命令行中传递 /detail 选项的多个实例,其中每个实例只有一个属性 ID。 /detail 选项的有效属性 ID 如下:
adapter | ID | projectrelativepath |
computername | isautomated | readonly |
debugtrace | 链接 | spoolmessage |
说明 | longtext | stderr |
displaytext | name | stdout |
持续时间 | outcometext | storage |
errormessage | 所有者 | testcategoryid |
errorstacktrace | parentexecid | testname |
executionid | priority | testtype |
组 | projectname | traceinfo |
如果存在用于指定的测试用例的属性,则其信息将包括在输出结果摘要中。
例如,命令行:
mstest /testcontainer:Errors.dll /detail:testtype
生成以下输出,其中包含测试类型信息:
...
Results Top Level Tests
-------- -----------------
Inconclusive TestProject2.BankAccountTest.CreditTest
[testtype] = Unit Test
...