当前位置: 首页 > 知识库问答 >
问题:

模拟junit中DAO层中的特定方法

袁康裕
2023-03-14

我有一个带有rest apiendpoint的应用程序。我想为此编写测试用例。它遵循MVC架构。对于其中一个endpoint,我想在我的DAO类中模拟一个方法。

我的测试类的示例代码是:

RequestBuilder requestGetBuilder = MockMvcRequestBuilders
                .get("/processcal/getdata/srn/{srn}",1000)
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON);

此控制器将调用具有要模拟的方法的DAO层。我尝试在我的Test config类中使用如下mockito:

    @Bean
    @Primary
    BookMarkDao bookMarkDao() {
        final BookMarkDao bookMarkDao = Mockito.mock(BookMarkDao.class);
        Mockito.when(bookMarkDao.fetchMrPostProcessCalc(Mockito.anyString()))
                .thenReturn(TestUtils.getMockResponse());
        return bookMarkDao;
    }

这样做的问题是,它模拟了整个DAO bean,所以对于其余的endpoint,它不调用DAO类方法,我的测试覆盖率降低了。有办法解决这个问题吗?

共有1个答案

楮庆
2023-03-14

您可以对模拟的 Bean 使用特定的配置文件,并在必要的测试用例中激活此配置文件。顺便说一句,如果您的应用程序基于Spring启动,那么您可以使用@MockBean而不是在测试配置中手动模拟DAO。

 类似资料:
  • 我正在使用Postman测试一些对API服务器的Curl请求。API开发人员给了我们curl命令,但我不能从邮递员那里发送。如何向邮递员提出这样的要求?

  • 在我的实现类中,我有一个读写锁定义,如下所示, 我在一个名为的方法中使用它, 正如我所说的,是null,但是rwLock是初始化的。请解释Mockito是如何发生这种情况的。理想的方法是什么?

  • 问题内容: 我是Junit的新手,下面是我正在运行的junit代码。 这是我的API在ReportUtil中删除的HashedSettings 下面是我必须模拟的CollectionUtil中的createHashMap的代码。 这是我在运行junit测试用例时遇到的错误。 我正在使用嘲笑-all-1.10.19.jar,powermock-api-mockito-1.6.6.jar,powerm

  • 但是对于这个源代码,我不能编写JUnit测试,因为不能模拟类。对于模拟final类,我们可以使用PowerMock,它支持模拟静态和final方法。但在这里,如果我使用PowerMock,它仍然不是嘲弄。我使用的是Spring Framework5.2.1.版本,这个版本的JUnit有没有什么变化来模拟最终类或方法?或者任何一个可以帮助我编写此代码的单元测试(我使用的版本是Spring Frame

  • 问题内容: 我在源代码中使用了BufferedWriter对象 我正在尝试在我的测试用例中模拟它,如下所示: 但是,BufferedWriter不会被嘲笑,它总是进入实际的实现中。是因为它不能模拟BufferedWriter,因为它是一个具体的类吗?这是否意味着无法模拟任何java.io类?有没有办法模拟它,或者我做错了什么? 问题答案: ,你可以嘲笑的Java IO类(包括它们的构造,所以未来的

  • 我有一种方法可以将文件上传到Amazon S3。我正在尝试为此方法编写JUnit,但在S3AsyncClient上获取NullPointerException: 我的班级: S3UploadData类对象的输入:` @Getter@allargsconstuctor 你能帮我写Junit for uploadFile方法吗?