Mock Settings.Global class Android JUnit - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь имитировать класс Settings.Global из Android и пытаюсь заглушить методы getInt (), getString (). Но то же самое совсем не работает. Я действительно не уверен, в чем ошибка, хотя мой механизм фиксации и заглушки работает для других классов. Вот код:

@Test
public void testIsSettingsEnabled() throws Exception {

    Context mockContext = mock(Context.class);
    mockStatic(Settings.class);
    mockStatic(Settings.Global.class);
    when(Settings.Global.getInt(any(), "displayColor")).thenReturn(0);

    Assert.assertFalse(Util.IsSettingsEnabled(mockContext, "displayColor"));
}

Я использую следующие версии JUnit и PowerMock: testImplementation 'junit: junit: 4.12'

testImplementation "org.mockito:mockito-core:2.28.2"
testImplementation "org.powermock:powermock-module-junit4:2.0.4"
testImplementation "org.powermock:powermock-module-junit4-rule:2.0.4"
testImplementation "org.powermock:powermock-api-mockito2:2.0.4"
testImplementation "org.powermock:powermock-classloading-xstream:2.0.4"

Ниже приведена ошибка:

java .lang.NoClassDefFoundError: libcore / util / EmptyArray

at android.util.ArrayMap.<init>(ArrayMap.java:304)
at android.util.ArrayMap.<init>(ArrayMap.java:283)
at android.provider.Settings$Global.<clinit>(Settings.java:13779)
at sun.reflect.GeneratedSerializationConstructorAccessor8.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

Я пытался получить ссылку на модульные тесты с помощью Settings.Global.class, но безуспешно. Если есть ссылка на такую ​​же, поможет.

Спасибо.

...