Mockito QueryDSL

Posted

技术标签:

【中文标题】Mockito QueryDSL【英文标题】: 【发布时间】:2021-12-10 00:13:24 【问题描述】:

我有一个使用 queryDSL 生成查询的方法。

public List<EntityDAO> getObject() 
        QEntity entity = QEntity.entity;
        JPAQueryFactory queryFactory = getJPAQueryFactory();

        JPAQuery<EntityDAO> query = queryFactory
                             .select(Projections.bean(EntityDAO.class, 
                              entity.propertyA,
                              entity.propertyB.count().as("count")))
                             .from(entity)
                             .where(predicateBuilder.build())
                             .groupBy(entity.propertyA)
                             .orderBy(order)
                             .limit(rowCount)
                             .offset(pageId*rowCount);
       return query.fetch();

如何使用 Mockito 测试此方法?

【问题讨论】:

【参考方案1】:

这个方法是数据访问层。对于数据层访问代码的测试,最好用实际的数据库实例进行测试,而不是mock,因为最后你还需要验证它是否真的能正确地从实际数据库中获取数据,这是最合适的。做的地方。

您可以通过Testcontainers 查询。它允许您使用数据库的容器化实例进行测试。启动这个DB容器后,只需将一些测试数据加载到相关表中,调用该方法,直接验证返回数据的正确性。

【讨论】:

以上是关于Mockito QueryDSL的主要内容,如果未能解决你的问题,请参考以下文章

Junit mockito

单元测试(mock) 错误org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework;解析

单元测试(mock) 错误org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework;解析

mockito简单教程

Mockito和PowerMock用法

android单元测试框架Mockito使用