Тестване на единица android listview превъртане с помощта на Roboelectric

Имам метод, който се опитва програмно да превърти до позиция в ListView. Методът има някои условия, така че внедряването му се различава леко в зависимост от версията на Android SDK, на която работи приложението.

Функционалността работи добре на 3 устройства с Android, на които съм тествал. Написах обаче единичен тест, използвайки junit и Roboelectric, който проверява дали превъртането е поставило елемента в целевата позиция видими. Тестът се проваля. Когато отстранявам грешки, забелязвам, че android.os.Build.VERSION.SDK_INT е 0, когато работи с Roboelectric (т.е. на работния плот срещу устройство или емулатор).

Опитах се да игнорирам версията и просто да използвам ListView.smoothScrollToPosition(), но методите getFirstVisilePoition() и getLastVisiblePosition() продължават да връщат 0, дори веднага след като извикам smoothScrollToPosition(150).

Някой знае ли дали/как превъртането на списъчен изглед може да се тества с помощта на Roboelectric?

Всяка помощ ще бъде благодарна - изглежда не мога да намеря информация по темата.

Благодаря,

Ана


person Ana M    schedule 16.02.2013    source източник


Отговори (1)


Ако използвате robolectric 1.1 или 1.2, ето източника за AbsListView: https://github.com/pivotal/robolectric/blob/master/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAbsListView.java

Изглежда, че цялата функционалност за превъртане е ShadowAdapterView: https://github.com/pivotal/robolectric/blob/master/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAdapterView.java

Не изглежда, че getFirstVisiblePoition() или getLastVisiblePosition() са внедрени.

Успях да постигна плавната позиция на превъртане.

@RunWith(RobolectricTestRunner.class)
public class SmoothScroll {

    @Test
    public void testSmoothScroll() {
        Activity context = new Activity();
        ListView view = new ListView(context);

        view.smoothScrollToPosition(100);
        Assert.assertEquals(100, Robolectric.shadowOf(view).getSmoothScrolledPosition());
    }

}

Можете да получите гладка превъртана позиция. Въз основа на височината на елементите може да успеете да определите кои са видими.

person Joe    schedule 16.02.2013