VerifyError:class net.sf.cglib.core.DebuggingClassWriter覆盖最终方法访问

时间:2012-02-13 03:01:43

标签: java testing junit

运行单元测试时遇到了这个错误。

我使用intellij和EasyMock 3.0以及cglib(2.2)和Objenesis(1.2)。

这是我的测试:

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

有谁知道为什么会这样?

我很好奇,因为我已经使用了正确的版本,至少我是这么认为的。我将不胜感激任何帮助。

2 个答案:

答案 0 :(得分:0)

检查项目的库依赖项。例如,如果您的项目使用asm.jar,请确保它的cglib版本正确。据我所知,asm 3.3适用于cglib 2.2很好但后来的版本会发生冲突。

答案 1 :(得分: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并且它可以工作。而EasyMock需要使用像asm这样的东西,它将取决于它。  可以帮忙。