演练:使用命令行测试实用工具
本演练演示如何从命令行提示符运行单元测试然后查看结果。
系统必备
在标题为演练:创建并运行托管代码的单元测试的演练中,执行以下过程:“准备演练”、“创建单元测试”和“运行单元测试并修复代码”。
Woodgrove Bank 项目。 请参见用于创建单元测试的示例项目。
使用命令行测试实用工具
使用命令行测试实用工具
打开一个 Visual Studio 命令提示符。
为此,请选择**“开始”,指向“所有程序”,指向“Microsoft Visual Studio 2012”,指向“Visual Studio 工具”,然后选择“开发人员命令提示”**。
命令提示符打开文件夹:<驱动器>:\Program Files\Microsoft Visual Studio 11.0\VC
将目录更改为包含从测试项目生成的程序集的文件夹。
若要执行此操作,首先将目录更改为解决方案文件夹。 对于在必需的演练中创建的 Bank 解决方案,此文件夹为:<驱动器>:\Documents and Settings\<用户名>\My Documents\Visual Studio\Projects\Bank。 然后,通过在命令提示符处键入以下命令,将目录更改为测试项目文件夹:
cd TestProject1\bin\Debug
此文件夹包含在创建和运行单元测试的过程中创建的测试项目。 测试项目程序集 TestProject1.dll 只包含少量单元测试。
备注
成品代码项目和测试项目将生成不同的程序集。请确保对测试项目的程序集(而不是成品代码项目的程序集)运行命令行实用工具。
通过命令行实用工具 MSTest.exe 可以启动和控制测试的执行。 通过在命令提示符处键入以下内容,可以查看 MSTest.exe 通过其选项提供的各种选择:
MSTest /?
使用该命令行实用工具测试应用程序。
在命令提示符处键入以下内容:
MSTest /testcontainer:TestProject1.dll
此命令可运行所有三种测试并返回如下结果:
Loading TestProject1.dll...
Starting Execution...
Results Top Level Tests
-------- ------------------
Inconclusive TestProject1.BankAccountTest.CreditTest
Passed TestProject1.BankAccountTest.DebitTest
Passed TestProject1.BankAccountTest.FreezeAccountTest
2/3 test(s) Passed, 1 Inconclusive
Summary
----------
Test Run Inconclusive.
Inconclusive 1
Passed 2
-----------------
Total 3
Results file: <path>\<test run name>.trx
Test Settings: Default Test Settings
备注
如果完成了演练:创建并运行托管代码的单元测试中的“为私有方法创建和运行单元测试”过程,此命令还将显示 GetAccountTestType 单元测试的结果。
再次运行测试并将测试结果保存到指定文件中。
在命令提示符处键入以下内容:
MSTest /testcontainer:TestProject1.dll /resultsfile:testResults1.trx
此命令可运行所有三种测试并返回与前面步骤中相同的结果。 它还会创建一个名为 testResults1.trx 的文件,将测试结果写入该文件中,并设置其格式以便在 XML 查看器(如 Microsoft Internet Explorer 或 Microsoft Visual Studio)中查看。 如果 testResults1.trx 已经存在,则 MSTest.exe 将不会运行,并将显示错误,说明已存在具有该名称的文件。
备注
有关可在 MSTest 命令中使用的所有选项的更多信息,请参见 MSTest.exe 命令行选项。
(可选)查看测试结果文件。 在命令提示符处键入以下内容:
testResults1.trx
这将打开 Internet Explorer 并显示测试结果。 此外,可在 Visual Studio 集成开发环境 (IDE) 中打开此文件,方法如下:
选择**“文件”,指向“打开”,然后选择“文件”**。
在**“打开文件”**对话框中,打开包含 .xml 文件的文件夹。
双击 testResults1.xml。
命令行实用工具 MSTest.exe 非常适合在批处理文件或其他实用工具中启动,以实现自动化测试运行。