2017-02-20 4 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 
    } 
    } 
} 

Есть ли способ я могу использовать PowerMockito с JukitoRunner?

ответ

0

Вы можете издеваться окончательный класс, если вы используете Mockito 2. Из Mockito 2 Wiki:

Mocking конечных классов и методов насиживание, опциональная функция. Он использует комбинацию инструментария и подкласса Java-агента, чтобы включить имитацию этих типов. Поскольку это работает по-другому с нашим текущим механизмом, и у этого есть разные ограничения, и поскольку мы хотим собрать опыт и отзывы пользователей, эта функция должна быть явно активирована, чтобы быть доступной; это можно сделать с помощью механизма расширения mockito, создав файл src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker, содержащий одну строку: mock-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()); 
Смежные вопросы