2011-10-01 2 views
0

내 프로그램에 쉬운 모의를 사용하여 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); 

} 

EasyMock.createMock 동안 아래 오류가 발생합니다. 내가 쉽게 모의를 위해 다운로드 한 libs와는 다음과 같습니다 - 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'은 '최종'입니까? – 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에는 위의 자바 1.5.0와 함께 작동합니다.
  • CGLIB (2.2) 및 Objenesis (1.2) 그래서 당신은 오히려 2.2 이상 버전 2.2.2을 사용하고

을 조롱 클래스를 수행하기 위해 클래스 경로에 있어야합니다. java.lang.VerifyError는 일반적으로 한 라이브러리에 대해 컴파일되었지만 다른 버전의 라이브러리에 대해 실행 중일 때 발생합니다.

Reasons of getting a java.lang.VerifyError에 대한 답변과 java.lang.VerifyError

참고를위한 Javadoc을 참조하십시오 : 위의 의존성 세부 정보를 찾기 위해, 당신은 단순히 Maven Search에서 검색 할 필요가있다.

+0

Mathew에게 감사드립니다. 그것은 효과가 있었다. 이런 종류의 jar 버전 종속성을 어디에서 찾을 수 있을까요? 내 말은 위의 코드 스 니펫을 통해 종속성 세부 사항을 어디서 얻었습니까? –

+0

에 종속성을 찾는 방법이 추가되었습니다. –

관련 문제