Я пытаюсь использовать ShadowOf () API Robolectric, чтобы проверить, отображаются ли элементы в просмотре списка или нет с измененными значениями данных, когда адаптер вызывает notifyDatasetChanged в коде разработки.
Для этого яя пытаюсь получить ShadowListView и проверить:
ListView lv = myFragment.getView().findViewById(R.id.myActualListView);
ShadowListView shadowListView = Shadows.shadowOf(lv); // <-- fails at runtime
shadowListView.populateItems();
assertTrue(shadowOf(adapter).wasNotifyDataSetChangedCalled());
assertTrue(lv.getChildCount() > 0);
//more lines of code to access list item
Однако я продолжаю получать ошибки для несвязанных классов при запуске тестового класса.
Ранее получалось сообщение об ошибке:
ошибка: невозможно получить доступ к файлу класса EuiccManager для android.telephony.euicc.EuiccManager не найден
После включения строки ниже в файле build.gradle:
testImplementation 'org.robolectric:robolectric:3.6.1'
Ошибка получения SliceManager, которую я нигде не использовал в своем коде -
ошибка: невозможно получить доступ к файлу класса SliceManager для android.app.slice.SliceManager не найден
Мой файл градала ниже:
//Robolectric
testImplementation 'org.robolectric:robolectric:4.1'
// testImplementation ('org.robolectric:shadows-supportv4:4.1')
testImplementation 'org.robolectric:robolectric:3.6.1'
testImplementation 'androidx.test:core:1.1.0'
testImplementation 'org.mockito:mockito-core:2.8.9'
androidTestImplementation 'org.mockito:mockito-android:2.8.9'
testImplementation 'com.google.truth:truth:0.42'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
androidTestImplementation 'junit:junit:4.12'
testImplementation 'com.google.code.findbugs:jsr305:1.3.9'
testImplementation 'org.powermock:powermock-api-mockito2:1.7.1'
testImplementation 'org.powermock:powermock-module-junit4:1.7.1'
Из-зак этой ошибке для отсутствующего класса, я не могу использовать Shadows.shadowOf () API.Можно ли как-нибудь выполнить модульное тестирование, если listview отображает измененные значения данных на экране относительно функции notifydatasetchange (), вызываемой в коде разработки?