可以使用 SQL Server 单元测试为数据库建立基线状态,然后验证对数据库对象所做的任何后续更改。
若要为数据库建立基线状态,请创建一个测试项目,并编写一组对数据库对象进行操作的 Transact-SQL。 使用这些测试,可以在隔离的开发环境中验证这些对象是否按预期运行。 SQL Server 单元测试可与使用 SQL Server 数据库项目进行脱机数据库开发结合使用。 有关详细信息,什么是 SQL 数据库项目? 获取 SQL Server 单元测试的基线后,可以使用这些测试来验证数据库是否正常工作,然后再将更改签入版本控制系统。
可以创建测试来验证对任何数据库对象的更改。 此外,还可以自动生成测试数据库函数、触发器和存储过程的 Transact-SQL 代码存根。
注释
无需打开数据库项目即可创建和运行 SQL Server 单元测试。 但是,如果要自动生成测试脚本以测试项目中的特定数据库对象,则必须打开包含要测试的对象的数据库项目。
当你或团队成员更改数据库架构时,可以使用这些测试来验证更改是否破坏了现有功能。 创建 SQL Server 单元测试以补充软件开发人员创建的软件单元测试。 必须完成这两组测试才能验证应用程序的整体行为。
单元测试可以验证这些过程在预期成功时是否成功,并且这些过程在预期失败时失败。 测试以确保发生预期故障称为反向测试。
Visual Studio 版本对 SQL Server 单元测试的支持
SQL Server 单元测试功能是在 SQL Server Data Tools 的 2012 年 12 月更新中添加的,可用于在 Visual Studio 2010 Professional 和 Visual Studio 2012 Professional 及更高版本中创建、修改和运行 SQL Server 单元测试。
若要确保安装最新的 SQL Server Data Tools 更新,请访问 “检查更新”对话框。
Visual Studio 2010 和 Visual Studio 2012 集成 SQL Server Data Tools shell 不支持 SQL Server 单元测试。
常见任务
在下表中,可以找到支持此方案的常见任务的说明,并链接到有关如何成功完成这些任务的详细信息。
| 常见任务 | 支持内容 |
|---|---|
| 获取实操经验: 你可以按照介绍性演练来熟悉如何创建和运行简单的 SQL Server 单元测试。 本演练包括负 SQL Server 单元测试的示例。 | 演练:创建和运行 SQL Server 单元测试 |
| 定义 SQL Server 单元测试: 必须在自己的项目中创建 SQL Server 单元测试。 配置该项目的设置,并为每个测试定义一个或多个测试条件。 |
创建和定义 SQL Server 单元测试 在 SQL Server 单元测试中使用测试条件 |
| 运行 SQL Server 单元测试: 定义一个或多个单元测试后,可以运行它们,调试任何问题,并检查测试结果。 | 运行 SQL Server 单元测试 |
| 管理测试组(Visual Studio 2010): 如果测试通常应该同时运行,则可以将测试组织成组。 测试列表仍受支持,但对于新的测试组,应改为考虑测试类别。 例如,可为触发器的测试或特定 架构中的所有对象创建测试类别。 |
定义测试类别以对测试进行分组 定义测试列表以对测试进行分组 |
| 检查测试项目和测试到版本控制: 运行测试并验证它们是否正常工作后,应检查测试项目以及版本控制中的所有关联文件,以便团队的所有成员都可以运行测试。 通过将测试项目与 SQL Server 数据库项目一起签入版本控制,可以轻松还原数据库和数据库测试的兼容版本。 |
将文件添加到版本控制 使用签入和挂起的更改窗口 |
| 定义自定义测试条件: 如果必须测试默认的测试条件集未涵盖的行为,则可以创建自定义测试条件。 必须将这些条件分发给想要运行使用新条件的测试的团队的所有成员。 | 方案:为 SQL Server 单元测试定义自定义测试条件 |
|
更新现有单元测试: 如果有在早期版本的 Visual Studio 中创建的数据库单元测试,则必须先对其进行升级,然后才能生成并使用此版本成功运行。 注意: 如果打开包含数据库项目和 Visual Studio 早期版本中的数据库单元测试项目的解决方案,系统会提示升级数据库项目。 系统不会提示升级必须手动升级的数据库单元测试项目。 |
升级包含数据库单元测试的较旧测试项目 |
| 扩展: 可以通过创建功能扩展来扩展 SQL Server Data Tools。 | SQL Server 单元测试的自定义测试条件 |
| 排查问题: 可以详细了解如何排查 SQL Server 单元测试的常见问题。 | 排查 SQL Server 数据库单元测试的问题 |