- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个类作为输入,并且想用另一个类来模拟一个类。在 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/
我有两个类作为输入,并且想用另一个类来模拟一个类。在 JMockit 中这曾经非常简单,只需调用 Mockit.redefineMethods(originalClass, mockingClass)
我是一名优秀的程序员,十分优秀!