Как использовать Mockito для фрагмента Kotlin / Activity для извлечения kotlinx.android.synthetic views

У меня есть фрагмент, написанный в Котлине. Я импортирую макеты с использованием

import kotlinx.android.synthetic.main.my_fragment_layout. *

В одном из моих методов в классе Fragment я устанавливаю текст для TextView в макете. Например:

fun setViews() { myTextView.text = "Hello" // In Java I would have used: // (getView().findViewById(R.id.myTextView)).setText("Hello"); } 

В моем модульном тестировании Mockito я хочу протестировать этот метод. Например, если вышеописанный метод был написан в java, я мог бы протестировать следующее:

 public void setViewsTest() { // Mock dependencies View view = Mockito.mock(View.class); TextView myTextView = Mockito.mock(TextView.class); when(fragment.getView()).thenReturn(view); when(view.findViewById(R.id. myTextView)).thenReturn(myTextView); // Call method fragment.setViews(); // Verify the test verify(myTextView).setText("Hello"); } 

Как я могу сделать подобную реализацию, когда Fragment написан в Kotlin, и у меня есть импортированные представления, используя: import kotlinx.android.synthetic.main.my_fragment_layout.

Я думаю, что Robolectric – более подходящий инструмент для такого типа тестов. Используя его, вы можете иметь более простой способ протестировать код с зависимостями Android от JVM.

Например, тест будет выглядеть примерно так:

 @Test fun `should set hello`() { val fragment = YourFragment() fragment.setViews() assertEquals(fragment.myTextView.getText().toString(), "Hello"); } 
Intereting Posts
Как настроить динамические опорные точки для поворота анимации Как использовать @link и @code в kotlin kDoc Java 8 lambda to kotlin lambda Каковы преимущества сопутствующего объекта над простым объектом? Kapt + LoganSquare не работает должным образом при сопоставлении Android Studio ярлык для автозаполнения Toast (Kotlin) Свойства бина, не равные нулю при инициализации, становятся нулевыми при вызове метода @Transactional Почему Kotlin не использует `List (…)` как фабрику для списков и аналогичную конвенцию для всех абстрактных коллекций? Как вы выполняете выборку api? Общие типы подстановочных знаков не поддерживаются Почему myDayForecast.map пуст? Ошибка несоответствия типа Котлин при передаче аргументов из терминала Какой модификатор доступа для тестовых вспомогательных методов? Плагин Maven-publish gradle пропускает версию Как я могу вызвать методы Kotlin с помощью reified generics из Java?