【发布时间】:2019-12-21 23:07:36
【问题描述】:
我是在单元测试中模拟事物的新手,我已经开始尝试使用 Mockito。是否可以使用 Mockito?
我正在尝试为分层 Web 服务应用程序编写单元测试。此时我正在测试Service层,它调用DAO层从数据库中获取数据。 我需要模拟数据库结果,这样我就不会在每次运行单元测试时都对数据库进行真正的更新调用。
我想通过模拟我的服务层调用的 DAO 对象来做到这一点,但我需要在不更改源代码的情况下这样做。如果我目前正在对服务层进行单元测试,如何让它使用模拟的 DAO 层?
我的单元测试如下所示:
@Test
public void testUpdate() {
RequestObject request = new RequestObject();
request.setEntityId(1234);
request.setLob('testLOB');
ResponseObject response = service.updateMember(request);
}
我的服务方法:
public ResponseObject updateMember(RequestObject request) {
ResponseObject result = DAO.updateMember(request);
}
在这种情况下是否可以在不模拟服务的情况下模拟 DAO? 编辑:我正在使用 Maven 进行依赖管理。
【问题讨论】:
-
你使用什么依赖管理系统? (Maven/Gradle)您能否将您的依赖项添加到您的问题中,这会对可能给出的答案产生影响。
-
在服务到测试中模拟 DAO 的难度取决于您如何将模拟的 DAO 注入到服务中。例如是否服务的构造函数允许传入一个 DAO 实例,或者一个可以创建模拟 DAO 的工厂?
标签: java unit-testing jdbc junit mockito