Cao*_*ing 4 java unit-testing dao
我不知道如何在数据访问层上应用单元测试.我总是想知道是否应该测试数据访问层.在我的公司,我们有稳定的数据库来存储单元测试数据和测试数据访问层,方法是运行数据访问对象并检查它们从稳定数据库中获取的数据.
为了通过单元测试,稳定数据库中的数据不再被修改.我认为有更好的解决方案.如果我没有弄错,模拟对象不能对SQL语句和ResultSet映射执行测试.
对DAO进行单元测试的最佳方法是什么?使用TDD有更好的方法吗?
lre*_*der 10
首先,根据大多数定义,"单元"测试不依赖于像数据库这样的外部系统.您想要创建所谓的"功能"或"集成"测试.在实践中,这些类型的测试将以与单元测试相同的方式实现,使用像Junit这样的东西,但是你应该将它们与单元测试分开,单元测试应该非常快,并且在数据库关闭或数据发生变化时不会中断.
其次,尝试将大部分业务逻辑保留在DAO之外,而是将其放入服务POJO层,以便您可以在不涉及数据库的情况下测试业务逻辑.
接下来,设置DAO测试的理想方法是从空数据库开始,并使用测试数据加载它(通常使用DAO本身),然后针对已知的可写测试数据集运行DAO测试.如果您有幸拥有只读数据库,那么stable database您概述的方法将起作用,但大多数系统都可以读/写数据库.
最后,测试DAO很有价值.数据库查询通常是系统中最脆弱的部分,您不希望等到它们部署到生产环境中才能发现它们正在崩溃.