Ошибка во время выполнения при использовании ShadowOf () API Robolectric 4.1 - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь использовать 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 (), вызываемой в коде разработки?

1 Ответ

0 голосов
/ 21 февраля 2019

Добавить 4.2 версию Robolectric.Все проблемы решены в версии 4.2.

    *testImplementation 'org.robolectric:robolectric:4.2'*

Примечание : Android SDK версия 28

...