我必须测试一个方法的幂等性。
假设我有类Person,方法如下:
public String doSomething(String a){
//do some stuff
personDao.delete(a)
}
在删除之前,我需要测试一下当出现问题时,下次你调用doSomething方法时,它会在第一次应该正确运行时创建与你想要的结果相同的结果。例如,当您运行一个调用该方法但失败的脚本(例如,停止脚本)时,可能会发生这种情况。当您在下一次运行脚本时,它应该会给出相同的结果而不会失败。
你能在单元测试中做到这一点吗?
提前感谢
测试应该运行该方法两次。两种情况下的结果应相同。就这么简单。
伪码:
setupException();
doSomething(a);
assertOutcome();
doSomething(a);
assertOutcome();
因此,答案的第一部分是对DAO使用mock。编写两个测试,其中一个方法被调用两次,DAO不会抛出异常。另一个地方,DAO在第一次调用它时抛出异常
这两种情况下的预期行为取决于您的DAO。对于已经删除的值,可以在DAO上调用delete
吗?如果是的话,那就太好了。预计会有两个电话。如果没有,那么您需要逻辑来检查状态。