2012-02-13 32 views
1

运行单元测试时遇到此错误。我使用intellij和EasyMock 3.0和cglib(2.2)和Objenesis(1.2)。VerifyError:class net.sf.cglib.core.DebuggingClassWriter重写最终方法访问

这里是我的测试:

public void testGetContentOk() throws Exception { 
    EasyMock.expect(mockConnectionFactory.getData()).andReturn(mockInputStream); 
    EasyMock.expect(mockInputStream.read()).andReturn(new Integer((byte)'I')); 
    EasyMock.expect(mockInputStream.read()).andReturn(-1); 
    mockInputStream.close(); 
    EasyMock.replay(mockConnectionFactory); 
    EasyMock.replay(mockInputStream); 
    WebClient webClient = new WebClient(); 
    String result = webClient.getContent(mockConnectionFactory); 
    Assert.assertEquals("I", result); 
} 

有谁知道为什么会这样?

我很好奇这件事,因为我已经使用正确的版本,至少我认为是这样。我会很感激任何帮助。

回答

0

检查项目库的依赖关系。例如,如果您的项目使用asm.jar,请确保它的cglib版本正确。据我所知,3.3与cglib 2.2一起工作良好,但后来的版本会冲突。

0

我只是得到一些类似的问题。取得依赖关系树。 如果你能找到一些lib取决于asm 4.0。而asm 4.0不能很好地与cglib 2.2配合使用。这可能是原因。

用我自己的情况,我用项目的maven让mvn dependency:tree得到依赖关系树。而且我发现这样的事情:

[INFO] | | | - com.esotericsoftware.kryo:kryo:jar:2.21:compile

[INFO] | | | +- com.esotericsoftware.reflectasm:reflectasm:jar:shaded:1.07:compile

[INFO] | | | | - org.ow2.asm:asm:jar:4.0:compile

我改变ASM到3.1,它works.And EasyMock的需要使用一些东西一样ASM,这将取决于它。 可能有帮助。