今天我有了一个想法,想为 MySQL 中的存储过程编写一个单元测试框架。完整的想法写在我博客上最近的一篇文章中。简而言之,它是这样的:我想自动化我的程序测试,我想使用一种标准化的方式来测试我的程序。单元测试被广泛记录,并且有无数的 XUnit 框架,为什么不为 MySQL(或任何其他数据库)编写一个。它当然是开源的。你怎么看?这是愚蠢的,愚蠢的,不必要的还是什么?或者另一个想法是用 SQL 编写一个通用的数据库框架。嗯,我真的很想和某人讨论一下,收集想法和想法。
7 回答
已经有一个用于 Sql Server 的测试框架 - TSQLUnit。也许你可以从中得到一些有用的信息。
Yes, great idea. I've been having a fair bit of success with pgTAP. I've used it in a number of projects, both for test driven database development and to write tests for existing procedures in order to be able to effectively refactor them.
I have often been asked if there's something like it for MySQL. Maybe you've written something by now?
我倾向于对数据访问层进行单元测试,这总是让人头疼,因为您必须使用适当的数据设置适当的数据库。有数据生成器可以帮助(如 RedGate 的数据生成器)使设置过程更简单。
我只是测试 DAL 背后的想法是,您实际上是在使用添加的 .Net DB 代码测试存储过程本身,我认为我们不需要担心单元测试。通过这种方式,您可以利用已有的所有工具和流程进行单元测试。为可以(恕我直言)与现有工具同样出色执行的东西开发一个单独的框架似乎需要付出很多努力。
不过我有一个开放的心态。如果有我忽略的好处,请告诉我。
干杯,V
好处之一是测试将在与存储过程编写和执行的环境相同的环境中编写,由主应用程序外部的专业数据库开发人员维护。应用程序开发人员无需成为关系数据库编程的大师,数据库开发人员也无需掌握现代应用程序开发语言。你现在对每一件事都进行了测试。为什么不让它们为数据库编写 sql 并在任何内部开发的应用程序之外执行。
如果您正在开发一个多层应用程序,那么将每个部分分开并单独测试它是有意义的。
试试 TST:http ://tst.codeplex.com
数据库中不应该有足够的逻辑来使测试变得有价值。