使用数据库功能创建单元测试的标准/最佳实践是什么?

16

我明白单元测试的概念,但是当需要数据库功能时,我试图想出一种简洁清晰的方式来实现它。比如,我有一个函数,它基于数据库查询返回结果。那么,数据库总是需要保持不变,才能确保只返回正确的结果吗?在需要数据库操作(无论是读取、写入、更新还是删除)时,如何最好地进行单元测试(在PHP中)?


1
请查看以下链接:https://dev59.com/KHVC5IYBdhLWcg3w7Vxq#145163 - Mark Roddy
数据库功能单元测试的最佳实践是与语言无关的。 仓库层的JUnit:https://dev59.com/questions/XG855IYBdhLWcg3wPB36#63424315 - nagendra patod
3个回答

14

4

个人而言,我会创建一个虚拟测试数据库,并在每次测试运行时使用已知数据集进行填充(我直接在setUp函数中完成此操作)。然后测试将针对该数据集运行,最后在tearDown中将其删除...

现在,这更像是一项集成测试而不是单元测试(个人而言,我会将其与其他集成测试一起按照自己的时间表运行,而不是单独运行),但它仍然非常有用。


“+1”表示“更像是集成测试而不是单元测试”- 我目前正在确定我们的哪些“单元”测试对数据库具有副作用,并将它们重新分类为集成测试,以便我们可以更频繁地运行适当的单元测试,并将耗时的集成测试留给夜间构建。 - Alex Humphrey

0

如果需要数据库,那么它就不是单元测试。


1
坦白地说,很明显提问者在谈论“功能”测试,这种测试确实应该有类似于您的数据库的东西。 - Josh Smith
4
这应该是对问题的评论,或者甚至是编辑,但这不是一个答案。 - Ulrich Eckhardt

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