【发布时间】:2015-05-17 17:40:29
【问题描述】:
我有以下代码(Facade 的一小部分)要覆盖在单元测试中。我正在使用 Mockito 来模拟属于服务层的函数。
Iterator<AbstractOrderEntryModel> entryModelItr = orderEntryModelList.iterator();
while (entryModelItr.hasNext()) {
AbstractOrderEntryModel entryModel = entryModelItr.next();
if (CollectionUtils.isNotEmpty(deletedPKList) && deletedPKList.contains(entryModel.getPk().toString())) {
entryModelItr.remove();
modelService.remove(entryModel);
}
}
我一直在通过调用要测试的函数并提供具有设定值的输入来编写测试用例,以便实现代码的最大覆盖率(如果这不是它应该完成的方式,请纠正我)。
我的问题是我的函数entryModel.getPk() 没有设置器,例如。 entryModel.setPk() 我可以打电话。结果,它将在此行中引发空指针异常。我不想模拟 entryModel 对象。怎么办?
(Pk 就像那个模型类的 PrimaryKey。整个代码是在 Hybris 平台上编写的)
【问题讨论】:
-
您是如何创建
entryModel的?不能在构造函数中提供PK吗? -
不,没有为
entryModel编写的这样的构造函数。假设我无法更改要测试的代码。它是由没有时间为其编写单元测试的其他人编写的。 -
我正在创建一个列表
orderEntryModelList,其中有一个元素,我再次创建并添加了 -entryModel。如果有 Pk 的设置器,我会在其中设置一些值。
标签: unit-testing junit mockito hybris powermockito