SQL 单元测试存储过程

15

我刚开始接触 SQL 数据库,但需要测试我的数据库。出于安全考虑,任何查询或更新都是通过存储过程完成的。

我的同行建议我使用存储过程来测试其他存储过程。这是保证存储过程按照预期工作的单元测试的好方法吗?


1
另一种测试数据库存储过程的方法是使用DBUnit - flup
6个回答

12

我发现使用Visual Studio有一个很好的解决方案: Visual Studio单元测试

它可以让你为SQL存储过程创建单元测试,你也可以使用正则表达式填充数据库 - 非常酷的东西。


7

除了 DbUnitNUnit,如果你喜欢写 tsql,你还可以使用 tSQLttSQLt 是一个用于编写 tsql 单元测试用例的开源框架。


2

来自dbunit.org的DbUnit是一个很好的框架。另外两个很棒的工具分别是tsqlt.org的TSqlUnit和tsqlt。


1
我不知道有哪些工具可以对SQL语句或存储过程进行单元测试。通常我会编写SQL脚本来进行测试。
以下是一些步骤:
  1. 创建一个空数据库,结构与原始数据库相同。
  2. 准备数据(从原始数据库导入一些数据)。
  3. 调用存储过程。
  4. 然后查看数据是否正确。
有时会编写一些断言语句,例如:
IF EXISTS (SELECT * FROM XX INNER JOIN XXX ON XXXXXXXX WHERE XXX=XXX)
     RAISEERROR XXXXXX

如果出现异常或错误,您可以检查存储过程。但这会浪费时间。通常我会检查大部分执行路径的存储过程,并测试主要的错误预期点。

1
我一直使用TST作为SQL Server测试框架,并取得了非常积极的结果。它运行良好,我甚至可以将其集成到我们在Team City中的CI环境中。
关键是非常小心地设置测试数据。无论您选择哪种测试框架,一定要应用测试数据构建器模式。如果不这样做,您可能很快就会遇到一些测试重构问题。

0
我一直在使用TestContainer(Mysql)来模拟mysql服务器。 使用Kotlin / Java JUnit5作为测试运行器。 因此,在测试用例中,它将会:
  1. 启动TestContainer
  2. 提供测试所需的种子数据。
  3. 执行存储过程。
  4. 断言数据的准确性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接