gpt4 book ai didi

java - 如何在 JMockit、PowerMocks 等任何模拟框架中模拟静态方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:26 29 4
gpt4 key购买 nike

我了解到我们可以使用带有 PowerMock 的核心 Java 库来模拟静态方法?Jmockit。想简要了解它在内部是如何做到的吗?

我的理解:- 当我们在测试用例本身中定义模拟类时(尽管在每个框架中都有不同的方法来创建模拟类,比如在 Jmockit 中使用期望语法),这些框架必须通过它们必须定义自定义类加载器正在寻找测试用例本身内部的类定义。这是一个猜测。不确定它是否正确? 但即使我是对的,类加载器 hirerchy 的偏好是 boootstraploader,然后是 applicationclassloader,而不是 customerclassloader。 那么它是如何从 customerclassloader 而不是 applicationclassloader 中选择的呢?

最佳答案

JMockit 和其他较新的框架基于 Java 1.5 Instrumentation 框架。这允许您重新定义私有(private)、静态和 final方法。甚至可以重新定义无参数构造函数。

这些框架使用 Java 代理,这是一个嵌入 JVM 中运行并拦截类加载过程的可插入库,可以帮助检测类的字节码。

您可以深入检查 Java 检测和 http://jmockit.googlecode.com/svn/trunk/www/about.html

关于java - 如何在 JMockit、PowerMocks 等任何模拟框架中模拟静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7619778/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com