【发布时间】:2017-11-21 16:52:57
【问题描述】:
我使用的是 EasyMock 2.4,由于依赖关系无法升级到最新版本。 我需要模拟抽象类,但不能使用 createMock 方法来模拟。 它会抛出一个类不是接口的错误。
谁能帮我解决这个问题?
有一个抽象类叫ClassA(我不能修改这个类):
public abstract class ClassA {
}
还有另一个 MyTest 类模拟 ClassA:
public class MyTest {
private ClassA mockClassA;
@Before
public void setup() {
mockClassA = createMock(ClassA.class); //Line number: 28
}
}
在运行时它会在 createMock 调用时抛出以下异常:
java.lang.IllegalArgumentException: ClassA is not an interface
at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:590)
at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557)
at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230)
at java.lang.reflect.WeakCache.get(WeakCache.java:127)
at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719)
at org.easymock.internal.JavaProxyFactory.createProxy(JavaProxyFactory.java:13)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:40)
at org.easymock.EasyMock.createMock(EasyMock.java:60)
at mypackage.MyTest.setup(MyTest.java:28)
【问题讨论】:
-
向我们展示您的尝试并发布确切的错误消息以及触发它的行,谢谢。
-
更新了代码和错误信息的问题。
-
请提供minimal reproducible example。我们无法编译您在此处发布的代码,因为它缺少一些信息。
-
从错误中,我猜你有类似
public class ClassA的东西。如错误所述,ClassA必须是接口,而不是类。 -
用更多信息进一步更新代码。 ClassA 被定义为抽象类。
标签: java unit-testing junit easymock