【发布时间】:2018-06-29 13:32:12
【问题描述】:
我需要运行给定次数的代码。我想知道如何对这个循环进行单元测试
public void executeCode(int iterations){
for (int i = 0; i < iterations; i++)
try {
callToCode(parms...);
} catch(Exception e) {
// handle exception
i--;
}
}
callToCode 此方法具有 100% 的行覆盖率,但其中一个要求是此方法在给定的迭代次数内执行。
我可以使用实例变量来跟踪执行,但是对此类循环进行单元测试的最佳方法是什么?
我只能使用 Junit 而不能使用其他库
【问题讨论】:
-
使用 Mockito 并检查是否正在调用该方法。 Mockito 允许您测试行为,JUnit 允许您测试状态。
-
这里我对使用 Mockito 或任何其他框架有限制。我应该提到这个问题
-
很明显,当您在异常情况下减少
i时,您的方法总是成功执行给定的迭代次数。不过,这可能需要无限长的时间。 -
“处理异常”是否有需要 JUnit 覆盖的代码?
-
如果你可以使用 JUnit 5,参数化测试就是这样做的:junit.org/junit5/docs/current/user-guide/…