【问题标题】:How to cover static fields with unit tests using mock?如何使用模拟单元测试覆盖静态字段?
【发布时间】:2020-06-16 06:31:18
【问题描述】:
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% 的覆盖率。是否应该在没有模拟的情况下测试静态字段?或者有没有办法使用模拟测试静态字段/方法/变量?

【问题讨论】:

    标签: java unit-testing junit static mockito


    【解决方案1】:

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

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

    【讨论】:

    • 是的,但我问的是一个字段,这是一个名为 Logger 的类,可以毫无问题地模拟。换句话说,我要问的是嘲笑 HARD_CACHE 但也要等待 3 秒
    • 检查你如何初始化 mocks,否则,尝试使用 spy 代替。 stackoverflow.com/questions/43577079/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多