2012-06-14 33 views
1

我試圖從簽名的Jar文件(實際上,目標類是在Eclipse API中)部分模擬一個類。Mock類與Mockito簽署的Jar文件

有沒有什麼方法可以和Mockito做到這一點?我嘗試了幾種解決方法,但結果始終是這樣的:

org.mockito.cglib.core.CodeGenerationException: 
    java.lang.reflect.InvocationTargetException-->null 
    ... 
Caused by: java.lang.reflect.InvocationTargetException 
    ... 
Caused by: java.lang.SecurityException: 
    class "org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate$$ 
      FastClassByMockitoWithCGLIB$$6e308a80"'s 
    signer information does not match signer information of other classes 
    in the same package 
    ... 

谷歌搜索了一下眼神表明PowerMock might help me,但我想避免引入一個新的依賴關係爲我的項目。

在此先感謝!

回答

2

我相信CGLIB已經調整爲支持已簽名的軟件包,但可能會有一些問題。 您可以製作一個簡單的項目,展示問題並在mockito項目上打開一個問題?

你在OSGI內部運行模擬嗎?

布賴斯

+0

Thx爲努力,Brice。基本上我正在開發一個Eclipse插件,並做了這樣的事情:'val delegate = spy(new MySimpleLaunchDelegate); doReturn(Array(「a」,「b」))。when(delegate).getClasspath(config)'。要嘗試用最小的例子重現問題。 – rlegendi

+0

好的,謝謝。我不熟悉簽名的罐子。但是你能檢查'AbstractJavaLaunchConfigurationDelegate'的ProtectionDomain的值和模擬的類嗎?最終這個討論可以繼續在Mockito問題:) – Brice

+0

我試圖用幾種方法(甚至混合Scala/Java代碼)重現問題,但我無法做到這一點。它一定是我的配置問題。所有的Mockito版本都運行得很完美,甚至是我原來使用的老版本(1.8.5)。抱歉虛驚一場。 – rlegendi