verifyPrivate не работает в модульных тестах Android - PullRequest
0 голосов
/ 16 июня 2019

Я изо всех сил пытался проверить количество вызовов частного метода в моем коде 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
    }
...