2017-01-05 2 views
0

私は些細なパブリックインターフェイスタイプを持っています。それは他のUDパブリックインターフェイスのコレクションを返すことを意味します。エラーのトラブルシューティング方法「Mockitoはこのクラスをモックできません:インターフェース」?

public interface SomeInterface { 
    //-------------------------------------------------------------------- 
    String getSomething1(String input1, String input2) throws SomeException; 

    //-------------------------------------------------------------------- 
    Map<String, String> getSomething2(String input1) throws SomeException; 

    //-------------------------------------------------------------------- 
    String getSomething3(SomeOtherInterface input3) throws SomeException; 

    //-------------------------------------------------------------------- 
    Map<String, String> getSomething4(Map<String, SomeOtherInterface> input1, 
     SomeOtherMoreInterface input2, String input3) throws SomeException; 

    //-------------------------------------------------------------------- 
    SomeOtherInterface[] getSomething5(String[] input1) throws SomeException; 
} 

その後、私は次のようにこのインターフェースのモックを作成しよう:

import org.junit.Assert; 
import static org.mockito.Mockito.*; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.BlockJUnit4ClassRunner; 

// Mockito produces the RTE below 
SomeInterface myMock = mock(SomeInterface.class); 

をしかし、再び、これは処理するMockitoのためにあまりにも多くをようで、私は非常に有益ではないRTEを得る:

org.mockito.exceptions.base.MockitoException: 
Mockito cannot mock this class: interface somepackage.SomeInterface. 

Mockito can only mock non-private & non-final classes. 
If you're not sure why you're getting this error, please report to the mailing list. 


Java    : 1.8 
JVM vendor name : Oracle Corporation 
JVM vendor version : 25.11-b03 
JVM name   : Java HotSpot(TM) 64-Bit Server VM 
JVM version  : 1.8.0_11-b12 
JVM info   : mixed mode 
OS name   : Windows 7 
OS version   : 6.1 


Underlying exception : java.lang.IllegalArgumentException: object is not an instance of declaring class 

これらのエラーのトラブルシューティング方法はありますか? MockitoがUDインターフェイスを模擬できるようにするために必要な要件のリストはありますか?

私は「素敵なモックを作成」を使用しているときEasyMockはそれほど特別ではないnitpickされなかったことはほぼ確かだろう...

私はこのようにMavenを介して、Mockitoをインポートしています:

<dependency> 
    <groupId>org.mockito</groupId> 
    <artifactId>mockito-core</artifactId> 
    <version>2.5.0</version> 
    <scope>test</scope> 
</dependency> 
+1

あなたがセットアップした方法を見るために、完全な例外と関連するテストコードを提供してください。私の推測では、それはインタフェース 'SomeInterface'per-seでは問題ではなく、インタフェースによって使用される他のインタフェース/例外の1つと関係しています。 – hotzst

答えて

-1

OK私はこれを交換する場合:

<dependency> 
    <groupId>org.mockito</groupId> 
    <artifactId>mockito-core</artifactId> 
    <version>2.5.0</version> 
    <scope>test</scope> 
</dependency> 

をこれに:

<dependency> 
    <groupId>org.easymock</groupId> 
    <artifactId>easymock</artifactId> 
    <version>3.4</version> 
    <scope>test</scope> 
</dependency> 

と、この:

import static org.easymock.EasyMock.*; 

SomeInterface myMock = createMock(SomeInterface.class); 
私のOPが、その後変更する私の組織のオプスを依頼することなく完璧に動作

/組織全体のためだけJVMのバージョンをアップグレードします。これで

import static org.mockito.Mockito.*; 

SomeInterface myMock = mock(SomeInterface.class); 

Mockitoの...

+2

申し訳ありませんが、libの問題の答えとしてlibを置き換えるのは良い方法ではありません。 –

関連する問題