gpt4 book ai didi

java - 使用 JMockit 中的现有类模拟类(替换 `redefineMethods` )

转载 作者:行者123 更新时间:2023-12-01 11:58:28 37 4
gpt4 key购买 nike

我有两个类作为输入,并且想用另一个类来模拟一个类。在 JMockit 中这曾经非常简单,只需调用

Mockit.redefineMethods(originalClass, mockingClass);

但在 0.999 版本中,这个已弃用的方法已被删除。我需要新版本 JMockit 的功能,因此我无法再使用旧版本。

我从弃用消息中的文档猜想,使用建议的“现代”方式来执行此操作将定义 MockUp<originalClass>并将其用作 mockingClass .

不幸的是,我在运行时将这两个值作为输入参数(声明为 class<?> ),因此创建类不是一个选项。

有没有办法模拟Mockit.redefineMethods()在版本 0.999 之前已经完成了,即使它可能不是解决这个问题的最优雅的解决方案?

编辑

我得到的输入是 Map<Class<?>, Class<?>> mockedClasses要模拟的类指向模拟它们的类。然后迭代这些并传递给 Mockit :

for (Map.Entry<Class<?>, Class<?>> entry : mockedClasses.entrySet()) {
Mockit.redefineMethods(entry.getKey(), entry.getValue());
}

之后,执行测试代码,然后再次禁用模拟,使用 restoreOriginalDefinition()而不是redefineMethods()以类似的方式。

最佳答案

好的,现在问题更清楚了。答案是,没有办法用另一个任意类来模拟一个类;您必须将模型类定义为 MockUp 的子类。非常旧的 Mockit.redefineMethods(Class, Class) (从 4.5 年前的 API 中删除)只接受任意类,因为初始 API 还支持 Java 1.4 的测试代码(自此以后不再支持) 0.999,需要泛型和/或注释)。

关于java - 使用 JMockit 中的现有类模拟类(替换 `redefineMethods` ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28175202/

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