Unit testing DAO的单元测试

Unit testing DAO的单元测试,unit-testing,testing,dao,sample,Unit Testing,Testing,Dao,Sample,这是我第一次进行单元测试,所以我试图找到如何对DAO进行单元测试的参考资料。你们能举一个简单的例子说明setUpBeforeClass,setUpBeforeClass和如何测试在数据库中插入新数据的方法吗。这只是一个使用easy mock的简单示例。谢谢你的考虑 使用模拟对象来执行单元测试的想法让我感到很奇怪,因为您所做的一切都是测试模拟对象,而不是真正的对象。如果您认为需要使用模拟对象来模拟数据库访问,那么您的整个体系结构都是错误的。我个人使用三层体系结构构建我的所有软件,在业务层中我可以拥

这是我第一次进行单元测试,所以我试图找到如何对DAO进行单元测试的参考资料。你们能举一个简单的例子说明
setUpBeforeClass
setUpBeforeClass
如何测试在数据库中插入新数据的方法吗。这只是一个使用easy mock的简单示例。谢谢你的考虑

使用模拟对象来执行单元测试的想法让我感到很奇怪,因为您所做的一切都是测试模拟对象,而不是真正的对象。如果您认为需要使用模拟对象来模拟数据库访问,那么您的整个体系结构都是错误的。我个人使用三层体系结构构建我的所有软件,在业务层中我可以拥有任意多的对象,但在数据访问层中只有一个对象。因此,如果我想用虚拟数据库访问来交换真实数据库访问,我会在哪里进行更改?我的业务层中的所有200多个对象,还是仅数据访问层中的1个对象?为什么我要实现一种机制来更改应用程序中的每个对象,而我真正需要做的只是更改一个对象

控制器应该经过集成测试,而不是单元测试。但测试金字塔规定单位级别是重点所在,因此默认情况下,人们会被卷入其中

断言在任何情况下都不应失败。 如果它们在测试中失败,则表明存在逻辑错误。 基本上,如果您的函数正在执行“assert(0)”而不是返回错误代码,那么应该重新编写该函数

你能对一个类的定义进行大规模的修改吗?甚至把整个过程都扔掉,用一个完全不同的实现来代替它,而不影响使用该类对象的任何代码

不幸的是,正如源于Java等僵化语言的各种模式所发生的那样,依赖注入已经传播开来,并作为一种跨语言的最佳实践而被提倡,其优势是灵活性和延展性

参考资料


适用于哪种编程语言?使用什么单元测试框架?我不确定你在寻找什么。一个简单的谷歌搜索会抛出很多关于SO的问题和答案,还有很多关于实现这一点的策略的文档。@zerkms我在使用java,如果我没有使用mockitomistaken@PreetSangha我已经试过谷歌了,但我的搜索并没有填补我缺乏知识的空白,这就是为什么我试图在这里要求提供一个示例,以便我可以按照itA DAO的步骤进行操作,因为它是一个集成类,所以使用mock测试它几乎没有价值(您是否要模拟SQL结果集?)。毕竟,DAO只有从外部系统检索数据的逻辑。