Как использовать 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
Изменить текучесть <Список <Obj1 >> в текущую <Список <Obj2 >> в комнате Обмен узлом в Guava MutableValueGraph Если isConnected возвращает true, почему Exeption говорит, что он не подключен? Нарисуйте линию на холсте медленно, как анимация Почему Bundle in Intent теряется? Android Kotlin `.replaceRange` не заменяет текст в SpannableString Преобразование массива ArrayMap в ArrayList – Kotlin Как использовать привязку данных и Kotlin в Android Studio 3.0.0 правильный способ запуска приложения kotlin из задачи градации Android: Как сделать преобразователи типов (для комнаты) универсальными для всех Список объектов в Котлине Как создать список с общим аргументом в Котлине Spring Data Elasticsearch с полем скриптов с данными класса данных Kotlin приводит к проблеме сериализации Джексона Динамическое развертывание и запуск узлов в CORDA Ошибка использования IntDef, определенного в Kotlin при использовании в Java Как создать наблюдаемый список в kotlin