Я изо всех сил пытался проверить количество вызовов частного метода в моем коде Android. Модульные тесты, которые я использую, перечислены ниже. Подпись частного метода, который я тестирую,
private void updateUI(boolean ok)
Проблема состоит в том, что тест всегда проходит независимо от того, сколько раз «в» в «verifyPrivate». Кажется, что строка, которую я называю "MemberModifier.suppress", не работает правильно, поэтому PoweMockito не может отслеживать класс / метод. Любой совет высоко ценится.
@Test
public void test_authenticated() throws Exception {
when(mockedContext.getApplicationContext()).thenReturn(mockedApplicationContext);
mockStatic(PreferenceManager.class);
PowerMockito.when(PreferenceManager.getDefaultSharedPreferences(any(Context.class))).thenReturn(mockedSharedPreferences);
PowerMockito.when(mockedSharedPreferences.getString("id", null)).thenReturn("id");
PowerMockito.when(mockedSharedPreferences.getString("pass", null)).thenReturn("pass");
zinkConnection = new ZinkConnection(mockedContext);
spyZinkConnection = PowerMockito.spy(zinkConnection);
MemberModifier.suppress(MemberMatcher.method(ZinkConnection.class, "updateUI")); // <--- Here I prepare the private method
Connection mockedConnection = mock(Connection.class);
spyZinkConnection.authenticated(mockedConnection, true);
assertEquals(ZinkConnection.ConnectionState.CONNECTED, ZinkConnectionService.getState());
spyZinkConnection.authenticated(mockedConnection, false);
assertEquals(ZinkConnection.ConnectionState.CONNECTED, ZinkConnectionService.getState());
verify(spyZinkConnection, times(1)).authenticated(mockedConnection, true);
verify(spyZinkConnection, times(1)).authenticated(mockedConnection, false);
PowerMockito.verifyPrivate(spyZinkConnection, times(1)).invoke("updateUI", true); // <--- Here I would like to verify number of calls
}