Intereting Posts
Волейбол Android для использования с кешем Дооснащение: сервер возвращает как ETag, так и Cache-Control: max-age = 60. Не следует ли использовать кеш при запросе <60s? Как просмотреть пользовательский шрифт Android Studio (используя каллиграфию) Phonegap 3.0 хочет android 17, но я хочу android 18 Как поток, созданный приложением, можно рассматривать как другое приложение из ContentProvider приложения? Как отобразить список изображений в ListView в Android? Двойной сим-Android Android sdk main.out.xml ошибка синтаксического анализа? Использование SQLite Trigger для обновления поля «LastModified» Как я могу отправить приложение для Android, которое я разрабатываю для кого-то по электронной почте? Как получить смещение в RecyclerView ItemDecorator Пытаться снять выделение с помощью getChildAt () Android AudioTrack играет в .wav-файл, получая только белый шум В эмуляторе Android можно заметить вибрационные эффекты? Android SyncAdapter с помощью учетной записи google

Robolectric (android): Тестирование событий?

Я написал несколько тестов, используя robolectric, и теперь я хочу сделать некоторые реальные тестовые классы.

Один из них заметил, что я не могу проверить такие события, как onCreate, onLocationChanged и т. Д.

Какова стандартная практика тестирования событий …

Должен ли я извлечь код внутри событий и поместить их в метод, событие вызовет метод, а также robolectro может вызвать метод, конечно, метод должен быть общедоступным, верно?

Также, если я хочу проверить что-то в моем методе, который обычно является частной переменной, тогда мне нужно будет добавить публичный getter, правильно? Так что я могу проверить это на robolectric?

Есть ли лучший способ разоблачения данных в robolectric?

Заранее спасибо.

Solutions Collecting From Web of "Robolectric (android): Тестирование событий?"

При тестировании onCreate я получаю robolectric, чтобы вызвать onCreate, а затем проверить, что действие находится в правильном состоянии после onCreate. Вот пример:

@RunWith(RoboTestRunner.class) public class DashboardActivityTest { private DashboardActivity activity; @Before public void setUp() throws Exception { activity = new DashboardActivity(); } @After public void tearDown() throws Exception { } @Test public void testDashboardHasButtons() { activity.onCreate(null); Button btn1= (Button) activity.findViewById(R.id.btn1); assertNotNull(btn1); Button btn2= (Button) activity.findViewById(R.id.btn2); assertNotNull(btn2); } } 

Тестирование частных методов обычно указывает на то, что ваш дизайн может быть улучшен и не является специфической проблемой Robolectric.

См. Этот вопрос для обсуждения: Как проверить класс, который имеет частные методы, поля или внутренние классы?

Начиная с v2 от Robolectric, это не правильный способ начать работу сейчас:

 MyActivity testActivity = new MyActivity(); testActivity.onCreate(null); 

Теперь правильным способом является использование этого:

 MyActivity testActivity = Robolectric.buildActivity(MyActivity.class).create().get(); 

Это даст вам экземпляр действия после вызова onCreate.
Если вы хотите протестировать onStart, onResume, onPause и т. Д., Это то же самое, просто больше методов.

 MyActivity testActivity = Robolectric.buildActivity(MyActivity.class).create().start().resume().pause().stop().destroy().get(); 

(Добавьте или удалите методы в приведенной выше строке кода, чтобы проверить точный экземпляр требуемого действия)

Просто хотел прояснить действительно новую приятную особенность Robolectric.