测试运行: 使用LINQ测试SQL存储过程2012-01-09 MSDN Dr. James McCaffrey对访问和操作后端 SQL Server® 数据库的程序进行测试十分常见。在此类情况中,应用程序基本都是通过使用 SQL 存储过程来与后端数据进行交互的。此时,可将存储过程看作待测试系统的辅助方法;因此也必须像系统中的任何其他模块一样测试它们。尽管在测试 SQL 存储过程时可使用的方法有很多,但我发现使用 LINQ 可极大地简化测试自动化。在本月的专栏中,我将向您展示如何使用 LINQ(尤其是使用 LINQ to SQL 提供程序)来测试 SQL 存储过程。我将假定您的 C# 和 SQL 技能属于中级水平,但没有 LINQ 方面的经验。如果查看图 1,您会发现我编写了一个小型的 C# 控制台应用程序测试工具,它展示了在测试 SQL 存储过程时必须执行的重要操作。我将测试一个简单但具有代表性的存储过程,名为 usp_DeleteMovie,它驻留在名为 dbMovies 的数据库中,该数据库存储与电影相关的数据。

Figure 1 Testing a Stored Procedure Using LINQ对于每个测试实例,我都会初始化一个测试平台数据库,使用特殊的电影 ID 来调用 usp_DeleteMovie,然后检查 dbMovies 的结果状态是否正确。图 1 中没有明显指出我使用的是 LINQ,与使用 ADO.NET 和 T-SQL 相比,使用它来创建测试工具将更加容易。在下面的内容中,我将介绍虚拟的 dbMovies 数据库和要测试的 usp_DeleteMovie 存储过程。我还会向您展示代码并解释所用的 LINQ 技术,然后说明如何修改和扩展我的示例来满足您的需求。待测试系统在深入探讨工具之前,让我们先来看看待测试系统的示例数据库,以便于您理解测试自动化。在常见的开发环境中,开发人员、测试人员和数据库架构师通常都使用自己本地的后端数据库副本。因此,假定您能访问创建了当前版本待测试数据库的 SQL 脚本。实际的数据库脚本可能很长很复杂,但图 2 中的示例数据库创建脚本却非常简单,这是为突出主要概念。