2013-06-17 3 views
0

Я пытаюсь найти статью о насмешливых частных методах. Фактически мы используем mockito в нашем проекте, но это настолько плохое покрытие тестов. Поэтому я пытался писать с Mockito и PowerMock, но я не могу найти хороших примеров и так далее. Может ли кто-нибудь объяснить мне это?Mocking private method with Mockito

+3

Почему вы хотите издеваться над частными методами? Обычно это плохая идея. –

+0

Если вы считаете, что вам нужно высмеять частный метод, это означает, что вы изменяете поведение общедоступного метода, который вы пытаетесь проверить. Поэтому очень вероятно, что вы не пишете действительный тест. Можете ли вы опубликовать более подробную информацию о том, чего вы на самом деле пытаетесь достичь, и, возможно, кто-то может дать вам более подробную помощь или советы о том, что должно быть в ваших тестах. Но насмешливые частные методы редко являются частью хорошего теста для класса; поэтому Mockito не предоставляет эту функциональность. –

ответ

3

Я думаю, что это работа для PowerMock. Я сомневаюсь, что Мокито может это сделать. The PowerMock documentation explains how to do it. И использует это в качестве примера:

@Test 
public void testReplaceData() throws Exception { 
     final String modifyDataMethodName = "modifyData"; 
     final byte[] expectedBinaryData = new byte[] { 42 }; 
     final String expectedDataId = "id"; 

     // Mock only the modifyData method 
     DataService tested = createPartialMock(DataService.class, modifyDataMethodName); 

     // Expect the private method call to "modifyData" 
     expectPrivate(tested, modifyDataMethodName, expectedDataId, 
         expectedBinaryData).andReturn(true); 

     replay(tested); 

     assertTrue(tested.replaceData(expectedDataId, expectedBinaryData)); 

     verify(tested); 
}