我是使用 SQL 数据库的新手,但一直面临着测试我的数据库的问题。 出于安全原因,任何查询或更新都是通过存储过程完成的。
一位同行建议我使用存储过程来测试其他存储过程。 对于对我的存储过程进行单元测试以确保它们正在执行它们应该执行的操作,这是一个好还是坏的解决方案?
我使用 Visual Studio 找到了一个出色的解决方案: Visual Studio 单元测试
它允许您为 SQL 存储过程创建单元测试,您还可以使用正则表达式填充数据库 - 非常酷的东西。
dbunit.org 的 DbUnit 是一个很好的框架。另一个很棒的工具是来自 tsqlt.org 的 TSqlUnit 和 tsqlt。
我一直在使用 TST 作为 SQL Server 的测试框架,并取得了非常积极的结果。 它运行良好,我什至可以将其集成到 Team City 中的 CI 环境中。
关键是要非常小心如何设置测试数据。无论您选择什么测试框架,请务必应用测试数据生成器模式。如果不这样做,您可能很快就会遇到一些测试重构问题。
我不知道哪个工具可以对SQL语句或存储过程进行单元测试。 我通常会编写 SQL 脚本来对此进行测试。
有时会写一些断言语句,例如
IF EXISTS (SELECT * FROM XX INNER JOIN XXX ON XXXXXXXX WHERE XXX=XXX)
RAISEERROR XXXXXX
如果抛出一些异常或错误,那么您可以检查存储过程。
但这只是浪费时间。
我通常大部分时间都会检查存储过程的所有执行路径,只测试主要错误期望点。
我一直在使用 TestContainer(Mysql) 来模拟 mysql 服务器。 使用 Kotlin/Java JUnit5 作为测试运行器。 所以在测试用例中,它会