首页 > 解决方案 > 如何使用模拟单元测试覆盖静态字段?

问题描述

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% 的覆盖率。是否应该在没有模拟的情况下测试静态字段?或者有没有办法使用模拟测试静态字段/方法/变量?

标签: javaunit-testingjunitstaticmockito

解决方案


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

你可以看这里:Mock private static final field using mockito or Jmockit


推荐阅读