2017-02-20 52 views
0

如何绑定Jukito最终类的模拟?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 
    } 
    } 
} 

有没有一种方法,我可以使用PowerMockito与JukitoRunner?

回答

0

如果你使用的Mockito 2.从Mockito 2 Wiki你可以嘲笑final类:

最终的类和方法的嘲讽是孵化,可选的功能。它使用Java代理工具和子类的组合来启用这些类型的可模拟性。由于这与我们当前的机制有所不同,而且这一机制​​有不同的局限性,而且我们希望收集经验和用户反馈,因此必须明确激活此功能才能使用;它可以通过mockito扩展机制完成,方法是创建包含单行的文件src/test/resources/mockito-extensions/org.mockito.plugins.MockMakermock-maker-inline

您创建该文件后,将的Mockito自动使用这个新的引擎和一个可以做:

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