我有一个简单的测试设计问题,我想一劳永逸地解决。
我非常习惯于常规的 Java 设计模式,其中有一些Manager interface
(或外观)和一组DAO interfaces
. 具体实现ManagerImpl
是使用DaoImpl
.
现在我正处于实施阶段,我的项目还没有连接数据库,所以我想这是在没有数据库的情况下编写正确单元测试的最佳时机:-)
我可以通过使用 mockito 来模拟我的经理的一些方法,但是由于 Test Under Method(或所谓的 System Under Test)在内部使用 DAO,我也必须模拟 DAO。不幸的是,如果不在我的管理器中设置具体的 DAO 实现,我就无法做到这一点,例如myManager.setMyDao(mockedDao)
,但现在我必须将此方法拉出setMyDao
到接口中,这当然会破坏封装并使我干净完美的接口看起来像垃圾。
所以问题是:如何在测试中模拟 DAO,同时保持干净的Manager-Dao
架构?