2013-02-16 2 views
1

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

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

Я попытался игнорируя версию и только с помощью ListView.smoothScrollToPosition(), но getFirstVisilePoition() и getLastVisiblePosition() методы продолжают возвращать 0, даже сразу после того, как я называю smoothScrollToPosition(150).

Кто-нибудь знает, может ли/прокрутить список, используя Roboelectric?

Любая помощь будет оценена по достоинству - я не могу найти какую-либо информацию по этой теме.

Спасибо,

Ana

ответ

2

Если вы используете 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()); 
    } 

} 

Вы можете получить плавное прокручиваемое положение. Основываясь на высоте элементов, вы можете определить, какие из них видны.