java - 如何使用模拟通过单元测试覆盖静态字段?

标签 java unit-testing junit static mockito

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

最佳答案

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

您可以在这里查看:Mock private static final field using mockito or Jmockit

关于java - 如何使用模拟通过单元测试覆盖静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62402257/

相关文章:

java - 如何在 Selenium 2 中选择/获取下拉选项

java - 在 Java 中创建一个随机获取 map 整数的 map

java - 无法创建安全的 XMLInputFactory

java - 如何使用 Junit 测试向 Leanft 添加重试逻辑?

java - 在 JUnit 中记录导致错误的数据的推荐方法是什么?

java - iText5 中的标题重叠

Java Swing透明JPanels问题

可以通过编程方式中断系统调用吗?

Selenium/Ubuntu 的 PHPUnit fatal error

unit-testing - 在 Racket 中模拟依赖行为