如何使用模拟的单元测试覆盖静态字段?


public class CacheAdder{
private static final int HARD_CACHE;
static {
HARD_CACHE = 22;
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
public int divide(int number, int divider) {
return  (int) HARD_CACHE+number/divider;
}
}

当我通过此示例类模拟和运行测试时,mockito 跳过了静态部分,这是有意义的,因为我模拟了HARD_CACHE的值,但同时我希望通过代码 100% 覆盖。是否应该在没有模拟的情况下测试静态字段?或者有没有办法使用模拟来测试静态字段/方法/变量?

一种方法是使用反射将值设置为静态字段

你可以在这里看: 使用 mockito 或 Jmockit 模拟私有静态最终字段

最新更新