Java 如何验证模拟类的减法?

Java 如何验证模拟类的减法?,java,mockito,Java,Mockito,我被困在一个单元测试中,我正在进行以下工作: if(dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_AMT") != null) { dsIn.setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn)-dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_YTD_AMT")); } else { dsIn.setItemNumber(1, "CC_FY_U

我被困在一个单元测试中,我正在进行以下工作:

if(dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_AMT") != null)
{
    dsIn.setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn)-dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_YTD_AMT"));
}
else
{
    dsIn.setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn));
}
getItemNumber()==null
时,我能够模拟第二种情况,但我正在努力找到正确的方法来验证第一种情况是否正在执行,并在减法后返回适当的数字。我已尝试为其编写以下测试用例:

@Test
public void testUncheckedApproved() throws TRDIException, IOException{


    Mockito.when(dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_YTD_AMT")).thenReturn(4.0);
    evaluate();

    Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn)) - Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_APPR_OBLIG_YTD_AMT", 
    Double.valueOf(newValueIn));
}

这显然不起作用,我也试着分别验证每种方法,但这不是实现的方法。“验证”方法不正确。我只需要找出这条线

我认为第二个
验证
是错误的。您发布了:

Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn)) - Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_APPR_OBLIG_YTD_AMT", 
Double.valueOf(newValueIn));
但它应该是:

double d1=Mockito.verify(dsIn).getItemNumber(1,"CC_FY_APPR_OBLIG_YTD_AMT");
double d2=Double.valueOf(newValueIn)-d1;
Mockito.verify(dsIn).setItemNumber(1, "CC_FY_UNOBLIG_AMT", d2);

(我忽略了检查这些方法被调用的次数,因为它们应该只被调用一次)。

什么是
evaluate()
做的?我必须首先理解测试代码背后的逻辑。第一个
if
用于什么?字段
CC\u FY\u APPR\u OBLIG\u AMT
不在后面使用。@LittleSanti它调用正在模拟的方法。逻辑实质上是:getItemNumber()从列“CC\u FY\u APPR\u OBLIG\u AMT”中获取一个数字。如果不为空,则将数据存储(dsIn)中的数字设置为colulmn“CC_FY_UNOBLIG_AMT”中的金额(将为1,因为newValueIn=1)减去“CC_FY_APPR_OBLIG_AMT”列中的金额。否则,请将数据存储值设置为“CC\u FY\u UNOBLIG\u AMT”,这是newValueIn。我建议您检查测试代码的逻辑?要删除的列是
CC\u FY\u APPR\u YTD\u AMT
,而不是像您所说的
CC\u FY\u APPR\u OBLIG\u AMT
。很抱歉,这是一个带有一些粗略编辑的快速复制粘贴。我更新了正在测试的代码以匹配测试。测试中的验证线不工作。我不知道如何正确地验证减法