我正在为我的程序使用简单的模拟编写junit。下面是测试方法
public static void doBeforeEachTestCase() {
private static FibanocciProg mock;
mock = EasyMock.createMock(FibanocciProg.class);
FibanocciProg testObject= new FibanocciProg();
EasyMock.expect(mock.recursionFib1(6)).andReturn(50);
EasyMock.replay(mock);
int actual = testObject.recursionFib1(6);
}
我在 EasyMock.createMock 时遇到以下错误。我下载的用于轻松模拟的库是:- easymock-3.0、cglib-2.2.2、asm-4.0_RC2
Exception in thread "main" java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter overrides final method visit.(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at net.sf.cglib.core.AbstractClassGenerator.<init>(AbstractClassGenerator.java:38)
at net.sf.cglib.core.KeyFactory$Generator.<init>(KeyFactory.java:127)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:112)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
at org.easymock.internal.ClassProxyFactory.createEnhancer(ClassProxyFactory.java:259)
at org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:174)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:60)
at org.easymock.EasyMock.createMock(EasyMock.java:104)
at TestMock.doBeforeEachTestCase(TestMock.java:19)
at TestMock.main(TestMock.java:13)
有什么指示吗?
最佳答案
您的 Easymock 依赖项版本错误。看着maven pom for EasyMock 3.0 ,依赖项是:
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>1.2</version>
</dependency>
Requirements
- EasyMock only works with Java 1.5.0 and above.
- cglib (2.2) and Objenesis (1.2) must be in the classpath to perform class mocking
所以您使用的是版本 2.2.2 而不是 2.2。 java.lang.VerifyError 通常发生在您针对一个库进行编译但随后针对该库的另一版本执行时。
查看Reasons of getting a java.lang.VerifyError的答案以及 java.lang.VerifyError 的 javadoc
注意:要查找上述依赖项详细信息,您只需搜索 Maven Search .
关于java - 使用 EasyMock 编写 Junit 时遇到 RunTimeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620435/