如何:配置数据库单元测试执行

本主题适用于:

Visual Studio 旗舰版

Visual Studio 高级专业版

Visual Studio 专业版 

Visual Studio 学习版

主题适用 主题适用 主题不适用 主题不适用

通过配置测试项目,可以指定若干项设置来控制数据库单元测试运行方式的各个方面。 这些配置设置存储在测试项目的 app.config 文件中。 如果直接编辑此文件,新值将出现在**“项目配置”**对话框中。

一个解决方案可以包含多个测试项目。 每个测试项目都包含一个 app.config 文件(即一组配置设置)。 因此,您的解决方案可以包含配置为以不同方式运行的多组不同的数据库单元测试(每个测试项目包含一组测试)。

这些设置控制以下方面:测试如何连接到将测试的数据库,如何将数据库项目中的架构部署到该数据库,以及是否使用数据生成计划填充数据库:

  • 数据库连接。 使用此设置可以指定用于连接到要测试的数据库的连接字符串。 有关更多信息,请参见指定连接字符串。

  • 架构部署。 数据库项目是数据库的脱机表示形式。 数据库项目表示数据库对象的结构,但不包含任何数据。 在更改了数据库项目中的架构后,可以在实际数据库中对它们进行测试。 在架构部署步骤中,应将要测试的数据库对象从数据库项目中复制到要对其运行测试的数据库中。 有关架构部署的更多信息,请参见部署数据库架构。

  • 数据库状态。 通过为数据库生成测试数据,可以在测试运行开始之前设置数据库的状态。 还可以通过从 TestInitialize 脚本中的备份副本还原数据库来设置数据库状态。 有关此方法的更多信息,请参见数据库单元测试中的脚本

    若要指定要生成的数据,可以创建一个数据生成计划并在其中标识应包含测试数据的表和列。 还可以指定数据的表示形式。 例如,可以为电话号码生成适当的位数,也可以从已擦除测试数据的数据库中导入虚构的客户名。 有关更多信息,请参见使用数据生成计划。

    提示

    测试不在解决方案文件夹中运行,而是在本地硬盘上的单独文件夹中运行。 虽然可以配置测试部署的各个方面,但通常不需要配置它们即可运行数据库单元测试。 有关测试部署的更多信息,请参见运行测试

指定连接字符串

指定数据库连接字符串

  1. 在**“测试”菜单上,单击“数据库测试配置”**。

    将出现**“项目‘TestProject’配置”**对话框。

  2. 在**“数据库连接”**下,可以执行下列操作:

    • 单击要用于执行单元测试的数据库连接。

    • 如果需要对另一个数据库连接验证测试执行,请选择**“使用辅助数据连接验证单元测试”**复选框并单击列表中的某个数据库连接。

    • 单击**“新建连接”向这两个列表中的任意一个添加连接。 也可以单击“编辑连接”**来修改现有连接的设置。

    此步骤会创建 ExecutionContext 连接字符串,该字符串用于执行数据库单元测试中的测试脚本。 如果还指定了辅助连接,则还会创建 PrivilegedContext 连接字符串。 此连接用于在数据库单元测试中的测试脚本之外测试与数据库间的交互。 有关更多信息,请参见连接字符串和权限概述

  3. 单击**“确定”关闭“项目‘TestProject’配置”**对话框。

  4. 重新生成测试项目以应用配置更改。

部署数据库架构

将数据库项目的架构部署到数据库

  1. 在**“解决方案资源管理器”中右击您的数据库项目,再单击“生成”**。

    在生成数据库项目时,将生成一个 Transact-SQL 脚本。 如果对某数据库运行此脚本,它会在该数据库中重新创建数据库项目的结构。

  2. 选择要配置的测试项目。

  3. 在**“测试”菜单上,单击“数据库测试配置”**。

    将出现**“项目‘TestProject’配置”**对话框。

  4. 在**“部署”**下,可以执行下列操作:

    • 选择**“在运行测试前自动部署数据库项目”**复选框,以确保对数据库项目所做的任何架构更改在测试运行前都已提交。

    • 在**“数据库项目”**之下单击要部署的数据库项目,或者单击省略号浏览其他项目。 数据库项目文件的扩展名为 .dbproj。

    • 在**“部署配置”之下单击要用于部署的项目配置。 选项包括“调试”“默认值”“发布”**。 不过,如果为单元测试创建了配置,该配置也会作为一个选项出现。

  5. 单击**“确定”关闭“项目‘TestProject’配置”**对话框。

    在测试运行开始时,将运行在步骤 1 中生成的 Transact-SQL 脚本。此操作会将架构部署到目标数据库。

  6. 重新生成数据库单元测试项目以应用配置更改。

    提示

    如果要使用数据生成并将架构部署为单元测试项目的一部分,请清除“如果可能发生数据丢失则阻止增量部署”复选框。 此复选框显示在数据库项目属性中的“生成”选项卡上。 如果在尝试部署架构前未清除此复选框,部署将失败。 有关更多信息,请参见如何:在部署到现有数据库期间控制数据丢失

使用数据生成计划

在数据库单元测试中使用数据生成计划

  1. 创建一个数据生成计划。 有关更多信息,请参见如何:创建数据生成计划

  2. 指定要用数据生成计划填充的表。 有关更多信息,请参见如何:指定用于数据生成的表

  3. 指定要在这些表中填充的列。 有关更多信息,请参见如何:为数据生成指定列

  4. 保存数据生成计划并指定其名称。

  5. 在“解决方案资源管理器”中单击要配置的测试项目。

  6. 在**“测试”菜单上,单击“数据库测试配置”**。

    将出现**“项目‘TestProject’配置”**对话框。

  7. 在**“数据库状态”**下,执行下列操作:

    • 选择**“在运行单元测试前生成测试数据”**复选框,以在运行测试前向数据库项目应用数据生成计划。 数据生成计划的扩展名为 .dgen。

    • 在列表中单击要应用的数据生成计划,或单击省略号浏览计划。

    • 选择**“在生成测试数据前清除数据库”**复选框,以覆盖指定数据库项目中的现有测试数据库。

  8. 单击**“确定”关闭“项目‘TestProject’配置”**对话框。

    调用数据生成计划的代码将会添加到测试项目的 AssemblyInitialize 方法中,您可以在名为 DatabaseSetup.cs 或 DatabaseSetup.vb 的文件中找到此方法。 如果现在运行数据库单元测试,则数据生成计划将在测试运行开始时一次性填充数据库。

    提示

    不能撤消已经执行的测试数据生成操作。

  9. (可选)若要在测试运行中多次使用此数据生成计划,请从 AssemblyInitialize 方法中复制调用该计划的代码并将其粘贴到数据库单元测试的其他方法中。

  10. 重新生成测试项目以应用配置更改。

请参见

任务

如何:创建数据生成计划

概念

使用单元测试验证数据库代码