2014-12-22 4 views
0

Пытается получить PowerMockito, идущий здесь для модульного тестирования на Android с RoboElectric. Я хочу вызвать публичный метод в тесте и проверить какое-то поведение, но я хочу изменить ответ частного метода в этом классе. Этот образец:PowerMockito с частным методом RoboElectric не издевается

public class TestPrivate { 

    public String doTest() { 
     return test(); 
    } 

    private String test() { 
     return "FOO"; 
    } 
} 

Я хочу запустить тест, который называется doTest, но использовать PowerMockito для изменения того, что возвращает test(). Моя попытка ниже не работает, тест() Возвращает "Foo", когда я бы ожидать моего теста, чтобы вернуться "BAR"

@RunWith(RobolectricTestRunner.class) 
@PrepareForTest(TestPrivate.class) 
public class WebSocketClientTest extends TestCase { 


    @Test 
    public void testConnect() throws Exception { 

     TestPrivate spy = PowerMockito.spy(new TestPrivate()); 
     doReturn("BAR").when(spy, method(TestPrivate.class, "test")); 
     String response = spy.doTest(); 
     assertEquals("BAR", response); 

    } 
} 

пару вещей:

Использование RoboElectric Test Runner кажется нормально с PowerMockito 1,6

Вот мой Gradle импорта

androidTestCompile 'junit:junit:4.11' 
    androidTestCompile 'org.robolectric:robolectric:2.4' 
    androidTestCompile 'org.powermock:powermock-mockito-release-full:1.6.0' 

заранее спасибо, есть другие сообщения об этом, но ни один из них не работают и года.

ответ

2

Ваша анкета @PrepareForTest, вероятно, не запускается, поскольку вы используете тест-драйв Robolectric, а не бегун PowerMock. В примере не отображается код Android - если это действительно автономный тест, а затем переключитесь на лидера PowerMock. Если вы действительно используете код Android в тесте, вам нужно будет изучить, как правильно инициализировать PowerMock без аннотации.

+0

Спасибо Том - да, я не понял бегуна. Эта процедура позволила мне запустить тест с помощью roboelectric runner: https://github.com/robolectric/robolectric/issues/1058 – bsautner

Смежные вопросы