2012-02-13 82 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,這將取決於它。 可能有幫助。