演练:创建和运行智能设备单元测试

更新:2007 年 11 月

此演练说明如何使用设备项目的 Team System 测试工具来创建、运行和自定义一系列测试。您将从一个正在开发的 C# 智能设备应用程序开始。然后,您可以创建一个测试项目,再创建一个单元测试,运行该测试并检查测试结果。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

在本演练中,您将完成下列任务:

  • 打开一个现有项目并创建一个方法。

  • 创建一个单元测试和设备测试项目。

  • 查看运行配置。

  • 运行单元测试。

  • 在命令提示符处运行单元测试。

先决条件

在开始此演练之前,您必须完成下列过程:演练:创建用于设备的 Windows 窗体应用程序。该必备演练会在 Pocket PC 2003 仿真程序上安装完成本演练所需的 .NET Compact Framework 2.0。请将该仿真程序窗口保持打开状态,或保存该仿真程序的状态。有关更多信息,请参见保存状态的文件

打开一个现有项目并创建一个方法

打开现有项目并创建一个方法

  1. 启动 Visual Studio。

  2. 在“文件”菜单上指向“打开”,再单击“项目/解决方案”。

    将出现“打开项目”对话框。

  3. 定位到在必备的演练中创建的 DeviceSample 项目,然后单击“确定”。

    DeviceSample 项目即显示在“解决方案资源管理器”中。

  4. 在“解决方案资源管理器”中右击 Form1.cs (C#) 或 Form1.vb (Visual Basic),然后单击“查看代码”,在代码编辑器中打开该文件。

  5. 将光标定位到 Form1 类中。

  6. 插入下列代码:

    public int Add(int a, int b) {return a + b;}
    
    Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer 
        Return a + b
    End Function 'Add
    
  7. 在“生成”菜单上单击“生成解决方案”。

    您现在拥有了一个名为 DeviceSample 的项目,它包含要测试的源代码。DeviceSample 的命名空间 DeviceSample 包含公共类 Form1,您将在以下过程中对该类的方法进行测试。

创建一个单元测试和设备测试项目

创建一个单元测试和设备测试项目

  1. 在“解决方案资源管理器”中右击 Form1.cs (C#) 或 Form1.vb (Visual Basic),然后单击“查看代码”,在代码编辑器中打开该文件。

    说明:

    DeviceSample 项目包含要测试的代码,这些代码也称为“测试代码”。

  2. 在 Form1 类中,滚动到 Add 方法。

  3. 右击 Add 方法,然后选择“创建单元测试”。

    随即出现“创建单元测试”对话框。

    在“当前选择”窗格中,树结构显示了包含 Form1 类的程序集的类和成员层次结构。使用此页可以为选定的任何成员生成单元测试,并可以选择要在其中放置生成的单元测试的测试项目。

    在该树结构中,只选择了 Add 方法。使其保持选定状态。

  4. 对于“输出项目”,单击“创建新的智能设备 Visual C# 测试项目”。

    说明:

    该测试项目的语言无需与项目语言匹配。例如,可以在 Visual Basic 设备项目上创建一个智能设备 Visual C# 测试项目。

  5. 单击“设置”。

    随即出现“测试生成设置”对话框。在“命名设置”组中,可以更改测试文件、测试类和测试方法在生成过程中的命名方式。在“常规”组中,可以更改测试生成过程的其他方面。将这些设置保留为默认值,然后单击“确定”。

  6. 在“创建单元测试”对话框中单击“确定”。

    随即出现“新建测试项目”对话框。

  7. 接受默认名称,然后单击“创建”。

    这将创建一个名为 TestProject1 的项目(它包含单元测试)、一个名为 DeviceSample.vsmdi 的文件(它包含有关测试列表和测试的信息)以及一个名为 SmartDeviceTestRun.testrunConfig 的文件(它包含有关测试运行位置和方式的信息)。

    该测试项目中添加了一个名为 Form1Test.cs 的文件,该文件包含一个测试类。

    说明:

    每个测试方法都被自动分配了 TestMethod() 属性。每个测试都与要测试的测试代码中的一个方法相对应。测试方法包含在已被分配了 TestClass() 属性的测试类中。

  8. 在 Form1Test.cs 中,为要测试的变量指定值。滚动到 AddTest 方法,在此可以看到三个 // TODO 行,它们指示要设置的变量,即 a、b 和 expected。

  9. 设置下列值:

    int a = 4;
    int b = 5;
    int expected = 9;
    

    这指定在用值 4 和 5 调用该方法时,返回值应为 9。

  10. 注释掉此 Assert 语句。

    Assert.Inconclusive("Verify the correctness of this test method.");
    

    这一剩余的 Assert 语句将预期结果 (9) 与调用 Form1 类的 Add 方法所产生的实际结果进行比较。如果这两个值不相等,则 Assert 返回 False,从而使测试失败。

  11. 保存 Form1Tests.cs 文件。

    您已创建了一个源代码文件,其中包含 DeviceSample 项目的测试。您现在可以对 DeviceSample 项目的代码运行 Form1Test 类中的测试了。

查看运行配置

查看运行配置

  1. 在“解决方案资源管理器”中双击名为 SmartDeviceTestRun.testrunConfig 的文件。

  2. 单击 Hosts。

  3. 验证 Host type 设置为 Smart Device,Platform 设置为 Pocket PC 2003,并且 Device 设置为 Pocket PC 2003 SE Emulator。

  4. 单击“关闭”退出。

    您已查看了指定用于执行测试的上下文的运行配置。

运行单元测试

运行和自定义单元测试

  1. 在“测试”菜单上,指向“窗口”,然后单击“测试视图”。

    将出现“测试视图”窗口。

  2. 右击“AddTest”,然后单击“运行选定内容”。

    Visual Studio 将该测试部署到设备仿真程序并运行该测试。如果“测试结果”窗口尚未打开,则它现在将打开。

    当测试运行时,在“测试结果”窗口的“结果”列中,测试状态将显示为“正在运行”。测试运行完成后,测试的结果将更改为“成功”。

    说明:

    部署测试时,Visual Studio 不会自动将 .NET Compact Framework 或 SQL Server Compact 3.5 部署并安装到目标设备或仿真程序上。运行测试前,仿真程序或设备必须安装这些组件。有关更多信息,请参见如何:在设备上安装 .NET Compact Framework如何:在设备上安装 SQL Server Compact 3.5

  3. 在“测试结果”窗口中双击表示测试的行。

    这将打开“测试结果详细信息”页,其中包含有关测试结果的信息。

    您已运行了所生成的、包含在 Form1Test 测试类中的 AddTest 方法并查看了结果。

从命令提示符处运行单元测试

运行和自定义单元测试

  1. 单击“开始”,依次指向“所有程序”、“Microsoft Visual Studio 2008”、“Visual Studio 工具”,然后单击“Visual Studio 2008 命令提示”。

    命令提示将打开并进入以下文件夹:驱动器:\Program Files\Microsoft Visual Studio 9.0\VC。

  2. 更改到包含从测试项目生成的程序集的文件夹。

    为此,请首先更改到解决方案文件夹。对于在必备演练中创建的 DeviceSample 解决方案,此文件夹为:驱动器:\Users\用户名\My Documents\Visual Studio\Projects\DeviceSample。然后,通过在命令提示符处键入以下命令,更改到测试项目文件夹:

    cd TestProject1\bin\Debug

    说明:

    您还可以通过指定完整路径,从任何文件夹中运行 MSTest.exe。

    此文件夹包含在创建和运行单元测试的过程中创建的测试项目。测试项目程序集 (TestProject1.dll) 包含少量单元测试。

    说明:

    成品代码项目和测试项目将生成不同的程序集。请确保对测试项目的程序集(而不是成品代码项目的程序集)运行命令行实用工具。

  3. 使用该命令行实用工具测试应用程序。

    在命令提示符处键入以下内容:

    MSTest /testcontainer:TestProject1.dll /runconfig:..\..\..\SmartDevicetestrun.testrunconfig

    说明:

    在对智能设备运行单元测试时,必须指定 /runconfig 选项。

    此命令将运行程序集中的所有测试并返回如下结果:

    正在加载 testproject1.dll...

    正在启动执行...

    结果 顶级测试

    ------- ---------------

    通过 TestProject1.Form1Test.AddTest

    1/1 个测试通过

    摘要

    -------

    测试运行已完成。

    通过 1

    ---------

    总计 1

    结果文件: <路径>\<测试运行名称>.trx

    运行配置:默认运行配置

    说明:

    可以在 Visual Studio 中打开通过执行 mstest.exe 生成的 .trx 文件,以便进一步调查测试结果。有关可在 MSTest 命令中使用的所有选项的更多信息,请参见 MSTest.exe 命令行选项

    命令行实用工具 MSTest.exe 特别适合在批处理文件或其他实用工具中启动自动化测试运行。

请参见

概念

单元测试框架

其他资源

使用单元测试

智能设备项目的测试工具