gpt4 book ai didi

java - 使用jmockit模拟扩展类的抽象方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:52 29 4
gpt4 key购买 nike

我的 Dao 类中有一个方法,如下所示:

  @Override
public List<Dog> loadAllDog(Date pDate) {
final MapSqlParameterSource lParameterSource = new MapSqlParameterSource();
lParameterSource.addValue("jdate", pDate);

final String lSql = readSqlQuery("LAD");
final NamedParameterJdbcTemplate lTemplate = createNamedParameterJdbcTemplate();

return lTemplate.query(lSql, lParameterSource, new DogExtractor());
}

我使用上述方法加载数据进行集成测试。不幸的是,结果列表的大小约为 300000 数据行。

对于我的测试,仅处理 100 个数据行就可以了。所以我写了一个 SQL 测试文件(Key LAD_TEST),它只返回 100 行:

SELECT 
*
FROM
DOG
WHERE
TO_CHAR(sell, 'dd.mm.yy') = TO_CHAR(:jdate,'dd.mm.yy')
and rownum <= 100

我的问题是,我可以无论如何包含测试sql(LAD_TEST)而不是真正的生产sql(LAD)而不更改此处的生产代码final String lSql = readSqlQuery(“LAD”); ???

我在我的测试类中使用jmockit,但是我正在谈论的dao类(mDogDao)没有被 mock ......

我的测试调用:

List<Dog> lAllDog = mDogDao.loadAllDog(lNow.getTime());

有什么方法可以使用 jmockit 来管理这个而不模拟 mDogDao 吗?

有什么建议吗?谢谢斯特凡

最佳答案

您可以模拟 NamedParameterJdbcTemplate 类,并记录期望,以便 query(...) 方法返回您想要的测试数据。

关于java - 使用jmockit模拟扩展类的抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608074/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com