从命令行使用 MSTest 运行自动测试

http://technet.microsoft.com/zh-cn/interopmigration/ms182487

从命令行运行测试

  1. 打开一个 Visual Studio 命令提示符。

    为此,请选择“开始”,指向“所有程序”,指向“Microsoft Visual Studio 2012”,指向“Visual Studio 工具”,然后选择“开发人员命令提示”

    默认情况下,Visual Studio 命令提示在以下文件夹位置打开:

    <驱动器号>:\Program Files\Microsoft Visual Studio 11.0\VC


    若要更改默认情况下命令提示符窗口打开的文件夹,请选择“开始”,指向“Microsoft Visual Studio 2012”,指向“Visual Studio 工具”,右击“开发人员命令提示”,然后选择“属性”“开发人员命令提示属性”对话框中,可以将路径更改为“起始于” 框中的默认文件夹。

  2. 将目录更改为解决方案文件夹,或者在步骤 3 中运行 MSTest.exe 程序时指定元数据文件或测试容器的完整路径或相对路径。

    若要标识解决方案文件夹,首先请标识 Visual Studio Projects 文件夹。 为此,请在 Visual Studio 中选择“工具”菜单上的“选项”,再选择“项目和解决方案”“Visual Studio 项目位置”下,将看到如下路径:

    <drive letter>:\Documents and Settings\<user name>\My Documents\Visual Studio\Projects

    解决方案文件夹通常是此 Projects 文件夹的子文件夹,如以下示例中的 Bank 文件夹:

    <drive letter>:\Documents and Settings\<user name>\My Documents\Visual Studio\Projects\Bank

  3. 运行 MSTest.exe 程序。

    在运行 MSTest.exe 时,必须指定测试元数据文件或测试容器(分别使用 /testmetadata 选项或 /testcontainer 选项指定)。 /testmetadata 选项仅可使用一次,以指示一个测试元数据文件。 可以多次使用 /testcontainer 选项,指示多个测试容器。

    必要时,可包含其中驻留有元数据文件或测试容器的文件夹的路径。 测试元数据文件驻留在解决方案文件夹中。

    根据测试类型的不同,测试容器可以是 XML 文件、从测试项目生成的程序集或驻留在测试项目文件夹中的其他文件。

示例

必须结合使用 /testcontainer 选项与 /category 选项来选择要运行哪些类别中的哪些测试。 例如,下面的命令在解决方案文件夹中运行,并且运行 Priority 1 和 ShoppingCart 类别中都有的测试:

MSTest /testcontainer: testproject2\bin\debug\testproject2.dll /category:"Priority1&ShoppingCart"


由于测试程序集文件驻留在其他文件夹中,因此需要相对路径。

如果要使用测试列表,最好结合使用 /testmetadata 选项与 /testlist 选项。 例如,以下命令在解决方案文件夹中运行。 由于测试元数据文件也驻留在该文件夹中,因此不需要任何路径:

MSTest /testmetadata:Bank.vsmdi /testlist:balancetests


Visual Studio 2012 中不再完全支持测试列表:

  • 无法创建新的测试列表。

  • 无法从 Visual Studio 内运行测试列表中的测试。

  • 如果已从 Visual Studio 2010 升级并且拥有解决方案中的测试列表,则可继续在 Visual Studio 中编辑它。

  • 可以从命令行中使用 mstest.exe 继续运行测试列表,如上所述。

  • 如果您在生成定义中使用的是测试列表,则可以继续使用它。

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

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

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

常规命令行选项

/testcontainer:[file name]

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

示例:/testcontainer:tests.dll

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

/testmetadata:[file name]

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

/testlist:[test list path]

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

/category:[test category filter]

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

/test:[test name]

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

/noisolation

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

/testsettings: [file name]

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

示例:/testsettings:Local.Testsettings

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

/runconfig:[file name]

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

示例:/runconfig:localtestrun.Testrunconfig

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

说明说明
保留此命令行选项是为了与以前版本的 Visual Studio 兼容。 测试运行配置已由 Visual Studio 高级专业版中的测试设置替换。

/resultsfile:[file name]

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

示例:/resultsfile:testResults.trx

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

/detail:[property id]

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

/help

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

/nologo

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

/usestderr

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

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

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

/publish:[server name]

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

/publishresultsfile:[file name]

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

/publishbuild:[build id]

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

/teamproject:[team project name]

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

/platform:[platform]

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

/flavor:[flavor]

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

使用 MSTest 选项

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

ms182489.collapse_all(zh-cn,VS.120).gif/testcontainer

/testcontainer:[file name]

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

说明说明

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

说明说明

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

ms182489.collapse_all(zh-cn,VS.120).gif/testmetadata

/testmetadata:[file name]

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

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

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

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

说明说明

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

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

ms182489.collapse_all(zh-cn,VS.120).gif/testlist

/testlist:[test list path]

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

说明说明

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

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

ms182489.collapse_all(zh-cn,VS.120).gif/category

/category:[test category filter]

使用 /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"),则必须将筛选器括在引号中。

ms182489.collapse_all(zh-cn,VS.120).gif/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

ms182489.collapse_all(zh-cn,VS.120).gif/noisolation

/noisolation

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

ms182489.collapse_all(zh-cn,VS.120).gif/testsettings

/testsettings:[file name]

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

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

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

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

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

    说明说明

    有关测试设置文件的更多信息,请参见使用 Microsoft 测试管理器为自动系统测试创建测试设置。

ms182489.collapse_all(zh-cn,VS.120).gif/runconfig

/runconfig:[file name]

注意 保留此命令行选项是为了与以前版本的 Visual Studio 兼容。 测试运行配置已由 Visual Studio 高级专业版中的测试设置替换。

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

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

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

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

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

ms182489.collapse_all(zh-cn,VS.120).gif/resultsfile

/resultsfile:[file name]

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

ms182489.collapse_all(zh-cn,VS.120).gif/usestderr

/usestderr

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

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

  • 运行级错误。

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

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

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

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

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

例如,命令行:

mstest /testcontainer:Errors.dll /detail:testtype

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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值