2011-10-01 26 views
0

我正在爲我的程序使用easy mock編寫junit。下面是測試方法在使用EasyMock編寫Junit時獲取RunTimeError?

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); 

} 

我在eclipse中獲取的錯誤,而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) 

任何指針?

+0

是你的'recursionFib1'' final'嗎? – palacsint

回答

2

您的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> 

EasyMock documentation

要求

  • 了EasyMock僅適用於Java的1.5.0及以上。
  • CGLIB(2.2)和Objenesis(1.2),必須在類路徑進行 類嘲諷

讓你在使用2.2.2版,而非2.2。 java.lang.VerifyError通常發生在針對一個庫進行編譯但是針對另一個庫版本執行時發生。

查看答案Reasons of getting a java.lang.VerifyErrorjava.lang.VerifyError

注意的Javadoc:找到上述相關性的細節,你只需要在搜索Maven Search

+0

感謝馬修。有效。還有一個問題,我們可以找出這種jar版本依賴關係?我的意思是你在哪裏得到了代碼片斷,說明了依賴性細節? –

+0

增加了如何查找依賴關係 –

相關問題