如何用junit测试方法的幂等性?

时间:2014-10-10 11:32:00

标签: java junit mockito idempotent

我必须对方法的幂等性进行测试。

让我们说我有以下方法的人类:

    public String doSomething(String a){ 
//do some stuff
personDao.delete(a)
}

我需要在删除之前测试出错的地方,下次调用方法doSomething时,它会在第一次正确运行时创建相同的结果。例如,当您运行调用该方法的脚本但是例如通过停止脚本失败时,可能会发生这种情况。当您在下一次运行脚本时,它应该在没有失败的情况下给出相同的结果。

你能在单元测试中做到这一点吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

测试应该运行该方法两次。两种情况下的结果/结果应该相同。它真的很简单。

伪代码:

setupException();
doSomething(a);
assertOutcome();
doSomething(a);
assertOutcome();

答案 1 :(得分:1)

所以答案的第一部分是使用模拟DAO。编写两个测试,一个调用方法两次,DAO不会抛出异常。 DAO在第一次调用时抛出异常的另一个。

这两种情况下的预期行为取决于您的DAO。是否可以在DAO上调用delete以获取已删除的值?如果是这样,很好。期待两个电话。如果没有,那么你需要逻辑来检查状态。