2017-02-20 3 views
0

最終的なクラスのモックをバインドする方法は?例えばJukitoRunner、最終クラスのモックバインド

public final class SomeFinalClass(){ 
    public SomeFinalClass(String someString){ 
    } 
} 

//テストクラス

@Runwith(JukitoRunner.class) 
public class TestingClass(){ 

@Inject 
private SomeFinalClass someFinalClassMock; 

public static class TestModule extends JukitoModule { 
    @Override 
    protected void configureTest() { 
     // bind(SomeClient.class).in(TestSingleton.class); 
    } 
    @Provides 
    public SomeFinalClass getSomkeFinalClass() { 
    return Mokito.mock(SomeFinalClass.class); //throws error 
    } 
    } 
} 

私はJukitoRunnerでPowerMockitoを使用することができます方法はありますか?

答えて

0

あなたはMockito 2 WikiからMockito 2を使用している場合は、最終的なクラスをモックすることができます最終クラスやメソッドの

モッキングはオプトイン機能、インキュベーションです。これらのタイプのモックを可能にするために、Javaエージェントの計測とサブクラス化を組み合わせて使用​​します。これは私たちの現在の仕組みとは違うので、これにはさまざまな制限があり、経験やユーザーからのフィードバックを収集したいときには、この機能を有効にするために明示的にアクティブ化する必要があります。これは、ファイルsrc/test/resources/mockito-extensions/org.mockito.plugins.MockMakerを作成して、mockito拡張メカニズムを介して実行することができます:mock-maker-inline

あなたはこのファイルを作成した後、Mockitoは、自動的にこの新しいエンジンを使用すると、1が行うことができます:

final class FinalClass { 
    final String finalMethod() { return "something"; } 
} 

FinalClass concrete = new FinalClass(); 

FinalClass mock = mock(FinalClass.class); 
given(mock.finalMethod()).willReturn("not anymore"); 

assertThat(mock.finalMethod()).isNotEqualTo(concrete.finalMethod()); 
関連する問題