我们的应用程序有一个服务层和一个 DAO 层,编写为 Spring bean。
在测试服务层时——我不想依赖真实的数据库,所以我通过为 DAO 层创建一个“模拟”实现来模拟它
所以当我测试服务层时——我将服务层 bean 链接到 Mock DAO bean 在生产中——将服务层链接到“真正的”DAO bean
这是个好主意吗? 关于如何模拟数据库层的任何替代建议?
澄清:这个问题是关于测试服务层而不是DAO层。 在测试服务层时——我假设 DAO 层已经过测试或不需要测试。 最主要的是——我们如何测试服务层——而不依赖于 DAO 实现——因此我在模拟 DAO 层
最佳答案
这是我们多年来一直使用的技术。请注意,在模拟 DAO 接口(interface)时,您有一些选择:
- 将模拟实例创建为真正的 Java 类
- 使用动态模拟框架,例如 jMock (我的偏好)或 EasyMock
动态模拟框架允许您在各种情况下(无数据、1 行、多行、异常抛出)进行 stub ,而无需创建复杂的类来 stub 您希望测试的行为
关于java - 测试用例 : Mocking Database using Spring beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1064729/