2013-02-01 1 views
4

내부에서 모의 ​​/ 스텁와 스팍 스펙을 실행 JUnit 테스트.VerifyError를이 작동하는 데 사용하는 경우 이클립스

갑자기 나는 이것들을 더 이상 실행할 수 없지만 java.lang.VerifyError를 얻는다.

mock/stub을 사용하지 않고 사양을 실행하면 예상대로 작동하고 Gradle 빌드에서 실행될 때 발생하지 않습니다.

이클립스 내부에서 스텁과 사양을 실행할 때 내가 얻을 스택 트레이스이다, (나에 전에 필요하지 않았기 때문에)

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.defineClassCond(ClassLoader.java:631) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
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.spockframework.mock.runtime.ProxyBasedMockFactory$CglibMockFactory.createMock(ProxyBasedMockFactory.java:80) 
at org.spockframework.mock.runtime.ProxyBasedMockFactory.create(ProxyBasedMockFactory.java:49) 
at org.spockframework.mock.runtime.JavaMockFactory.create(JavaMockFactory.java:51) 
at org.spockframework.mock.runtime.CompositeMockFactory.create(CompositeMockFactory.java:44) 
at org.spockframework.lang.SpecInternals.createMock(SpecInternals.java:47) 
at org.spockframework.lang.SpecInternals.createMockImpl(SpecInternals.java:282) 
at org.spockframework.lang.SpecInternals.StubImpl(SpecInternals.java:131) 
at se.hd.taglib.TaglibSpecBase.stubPageContext(TaglibSpecBase.groovy:43) 

내가 실행 구성에 대한 인수를 설정하지 않은 있지만, 이 문제를 해결하기 위해 실행 구성에서 설정할 수있는 런타임 또는 환경 변수가 있습니까?

  • 스포크 : org.spockframework:spock-core:0.7-groovy-2.0
  • 그루비 : org.codehaus.groovy:groovy-all:2.0.6
  • 이클립스 : Version: Juno Service Release 1 Build id: 20121004-1855,
  • 그루비 - 이클립스 플러그인 (소스 레벨이 1.6으로 설정되지만, jdk1.7.0_06.jdk 실행) 2.7.1.xx-RELEASE-20121219-0800-e42

답변

3

Eclipse 클래스 경로와 같은 사운드에 잘못된 CGLIB (또는 ASM) 버전이 있습니다. Spock 0.7은 cglib:cglib-nodep:2.2.2에 대해 컴파일되었습니다.

+0

감사합니다. "Project Properties"> "Java Build Path"> "Order and Export"목록의 맨 위로 "* Gradle Dependencies *"항목을 이동 시키면 junit-tests로 스펙을 다시 실행할 수 있습니다. – traneHead

관련 문제