java - 如何使用模拟单元测试覆盖静态字段?
问题描述
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 - 如何为@WebMvcTest 提供所需的依赖项?
- angular - 无法将数据传递给垫子对话框
- css - flexbox:设置对齐项目中心,但文本将继续到底部,而不是从中心扩展到顶部和底部
- spring-boot - 如何解决从使用的 api 保存数据的问题
- ruby-on-rails - ruby on rails 应用程序不显示我视图的 html 代码
- flutter - 只有在 DevTools Debugger 中定义断点时,VSCode 中的 Dart Flutter 调试才有效
- r - 作为参数传递给另一个函数的函数
- angular - 如何在 Typescript 中计算持续时间(可能的未定义值)?
- timeout - Rinkeby 合约部署错误:超时
- python - 第二个 While 循环未运行且第一个循环中的 If 语句未运行