何为单元测试?
如果你对单元测试还不太了解, 可以看看中文维基百科的词条 http://zh.wikipedia.org/zh-cn/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95

何为数据库单元测试?
如果你对数据库单元测试还不太了解, 可以看看下面英文网站 http://www.agiledata.org/essays/databaseTesting.html

数据库单元测试的范围是什么?
1.数据库中的所有程序, 这包括存储过程/存储函数, 视图等, 对于Oracle, 还有package这个概念.
2.数据库中的一些数据, 比如控制表, 数据字典表
3.其他情形(这一点是废话, 你可能在很多法律条文中, 经常看到它)

由谁来做数据库代码单元测试?
和一般的单元测试一样, 应由数据库代码的开发者做.

为什么要做数据库的单元测试?
如果你认为有必要对C#, Java代码做单元测试, 那么你就应该想到也需要对数据库代码做单元测试,. 具体讲:
1. 错误越早发现,修复的代价越小, 这一点, 我想做所有软件同学都有同感吧. 单元测试可能是最早能帮你找到defect的环节了.
2. 单元测试提供了一种结构化的回归测试方式, 尤其是对不断演进的系统, 回归测试好处多多, 很多时候, 你可以通过回归测试, 发现新改动对原有功能造成了影响.
3. 如果你采用测试驱动开发TDD来做项目, 那单元测试工具是比不可少的. 至于何为测试驱动开发, 请参考维基百科(http://zh.wikipedia.org/zh-cn/%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91) 或者(http://www.agiledata.org/essays/tdd.html)
4. 如果你的team要做Continuous Integration, 单元测试工具也是比不可少的.

有了Mock框架, 数据库单元测试还需要吗?
要回答这个问题, 你需要清楚为什么引入Mock的原因是什么. 如果你要测试一段包含数据库逻辑的C#代码, 你完全可以使用Mock来做模拟数据库逻辑, 而且, 我认为, 这是一个值得推荐的做法, 原因: 一来, 你的目标是测试C#的逻辑, 而不是相关的数据库代码, 理所当然, 应该假设数据库代码是正确的, 但事实上, 数据库代码不一定是正确的, 因此, 你需要一个数据库代码的替身. 二来, 一旦包含了数据库代码的测试, 情况将变得很复杂, 也许你不得不处理, 如何初始化数据库的数据, 在测试之后, 如何恢复数据库的状态.
稍等, 这时候数据库代码的测试还没有被cover到, 你就需要一个专门的数据库单元测试工具了.

一个数据库单元测试工具应该具备的功能?
1. 很多时候, 要测试一个逻辑, 你需要在数据库中初始化一些基础数据, 单元测试软件应该能让我们很方便地准备这些基础数据.
2. 前一点算是setup吧, 在做完测试工作后, 可能还需要有一个teardown过程, 所以这个也是必须的. 
3. 因为你可能需要对一个数据库代码做多次单元测试, 所以, 单元测试最好可以工作在一个Sand Box中.

4. 它支持的测试用例应该是declarative, 而不是imperative

有关数据库单元测试的几个常见问题相关推荐

  1. 使用dbUnit,JSON,HSQLDB和JUnit规则进行数据库单元测试

    在本周TDD课程的运行中,我认为编写一些夹具以简化dbUnit的使用将很有趣. 我最初的想法只是教dbUnit有关JSON的知识,但事实证明Lieven Doclo已经做到了. 因此,我决定更进一步, ...

  2. 软件测试宝藏图_tSQLt –数据库单元测试中被遗忘的宝藏

    软件测试宝藏图 This article is an overview of tSQLt, which is one of the best SQL unit testing frameworks, ...

  3. Springboot单元测试mysql_Springboot Mybatis-Plus数据库单元测试实战(三种方式)

    单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写 ...

  4. 谈一下我们是怎么做数据库单元测试(Database Unit Test)的

    背景介绍 最近在团队在做release之前的regression,把各个feature分支merge回master之后发现DB的单元测试出现了20多个失败的test cases.之前没怎么做过DB的单 ...

  5. dbunit使用_使用dbUnit,JSON,HSQLDB和JUnit规则进行数据库单元测试

    dbunit使用 在本周TDD课程的运行中,我认为编写一些夹具以简化dbUnit的使用将很有趣. 我最初的想法只是教dbUnit有关JSON的知识,但事实证明Lieven Doclo已经做到了. 因此 ...

  6. 数据库-解决MySQL的一些常见问题

    实例 以下是如何解决MySQL的一些常见问题的示例. 首先创建一个表,并且导入数据 CREATE TABLE shop ( article INT(4) UNSIGNED ZEROFILL DEFAU ...

  7. 最新版AnyDbTest数据库单元测试工具的下载地址

    为了方便国内用户使用AnyDbTest软件, 已将软件发布到codeplex网站了. http://anydbtest.codeplex.com/releases/ 注: AnyDbTest原网站ht ...

  8. mysql数据库开发常见问题及优化

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  9. sql重命名数据库_为什么要为SQL单元测试巧妙地命名数据库对象

    sql重命名数据库 This article is focussed on clever database object naming from both development and SQL un ...

最新文章

  1. qt定时器是阻塞的吗_吊打面试官 | 面试官:TCP真的可靠吗
  2. JS 活学活用正则表达式
  3. php echo表单提交_PHP常见面试题及答案
  4. lt;%%gt;创建内联代码块(表达)
  5. JAVA对象集合转化为xml转换_xml转为Map集合以及对象转化为xml
  6. java deque.pop_Java ArrayDeque pop()方法
  7. 世界一流大学博士生典型科研特征
  8. 为什么大家越来越不着急换手机?
  9. 计算机组成加速比例题,计算机体系结构大题预测
  10. 8uftp,什么是8uftp
  11. emouse思·睿—评论与观点整理之一
  12. 计算机cad比例尺1 150,CAD图纸里面 1:50 和:1:100和1:150三个比例分别怎么换算...
  13. Python学习笔记-数据类型(元组 tuple)
  14. MATLAB输出白色背景图片
  15. 交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)
  16. LOAM源码结合论文解析(二)laserOdometry
  17. PyQt5 常用窗口总结
  18. 人民币贬值之后该买什么
  19. 2016年阿里巴巴、腾讯等公司暑期实习面试经验分享
  20. 用Python中的马尔科夫链进行营销渠道归因

热门文章

  1. 启用 WebLogic Server 域之间的信任
  2. 中国无线充电器市场现状研究分析与发展前景预测报告
  3. 用VB6.0在Vista下实现全磨砂玻璃窗口
  4. 手把手教你用Python做个可视化的“剪刀石头布”小游戏
  5. 用python把当前路径下excel转化为pdf
  6. VFP 导出到excel
  7. python学习软件破解版_Thonny下载-Thonny(Python编程学习软件)v2.2.2官方免费版-ucbug下载站...
  8. python遥感影像地物分类_基于TensorFlow的遥感影像地物识别方法研究
  9. 内容营销专家刘鑫炜:品牌没人知道啥办?如何快速推广自己的品牌
  10. 模拟QQ上线头像闪动效果