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

标签 java junit jmockit

我的 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/

相关文章:

java - 从图库 Android 应用中拍照时 ImageView 不显示图像

java - JUnit 中的测试方法阻止电子邮件发送

java - MouseEvent 怪异

java - Junit:在没有实例的情况下调用私有(private)方法

java - 模拟接口(interface)为空

java - 以编程方式创建一个新的 TextView,然后将其显示在另一个 TextView 下方

java - 在 Java 中将对象分配给数组,它返回 null

java - 枚举 toString 上的 ClassCastException

java - JMockit期望API——返回输入参数

java - 找不到或加载主类,为什么?