Тест инструмента Android стирает общие данные о предпочтениях при загрузке собственной библиотеки - PullRequest
1 голос
/ 20 марта 2019

Когда я создаю тестовый пример Android Instrumentation ниже, я нахожу странную проблему.Со строкой загрузки нативной библиотеки lib System.loadLibrary("jnidispatch"); тест не пройден;без этой строки тестовый пример работает нормально.Я тестирую с любыми нативными библиотеками, проблема та же, поэтому не из-за поведения нативной библиотеки уничтожить общие предпочтения.Кажется, это ошибка теста инструментов Android, любой может объяснить, почему?

@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
    private static final String MY_ID = "MY_ID";
    private static final String TEST_DATA = "Test";

    @Test
    public void sharedPreferenceTest() {
        Context context = InstrumentationRegistry.getContext();
        // Set ID
        SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString(MY_ID, TEST_DATA);
        editor.apply();

        System.loadLibrary("jnidispatch"); // load native libary

        // Get ID
        SharedPreferences sharedPref1 = PreferenceManager.getDefaultSharedPreferences(context);
        String data = sharedPref1.getString(MY_ID, null);
        Assert.assertEquals(data, TEST_DATA);
    }
}

Пример проекта можно скачать здесь.

ОБНОВЛЕНИЕ: В конце концов я обнаружил, что это проблема устройства, проблема возникает только на определенном устройстве, например на устройстве OPPO.

...