Попытка следовать примеру https://developer.android.com/guide/navigation/navigation, у меня ожидаемая ошибка

< Сильный > org.mockito.exceptions.base.MockitoException : Mockito не может издеваться над этим классом: class androidx.navigation.NavController.

Даже после этого включите все зависимости, как здесь: https://developer.android.com / обучение / тестирование / установка - проект

@RunWith(AndroidJUnit4::class)
class MyShopFragmentTest {

    @Test
    fun testMyShopScenario_F001() {
        // Create a mock NavController
        val mockNavController = mock(NavController::class.java)

        // Create a graphical FragmentScenario for the MyShopFragment
        val myShopFragmentScenario = launchFragmentInContainer<MyShopFragment>()

        // Set the NavController property on the fragment
        myShopFragmentScenario.onFragment { fragment ->
            Navigation.setViewNavController(fragment.requireView(), mockNavController)
        }

        // Verify that performing a click prompts the correct Navigation action
        onView(ViewMatchers.withId(R.id.search)).perform(ViewActions.click())
        verify(mockNavController).navigate(R.id.searchFragment)
    }
}

Любая идея?

4
iflorit 17 Июн 2019 в 19:06

2 ответа

Лучший ответ

Решением было использование полностью открытой аннотации (https://kotlinlang.org/docs/ reference / compiler-plugins.html) и настройте проект, как описано здесь -> https://developer.android.com/training/testing/set-up-project

0
iflorit 26 Июн 2019 в 06:35

Для меня, изменение моей зависимости от

androidTestImplementation 'org.mockito:mockito-core:3.2.4'

К

androidTestImplementation 'org.mockito:mockito-android:3.2.4'

Работал хорошо.

0
Rafael Pereira Ramos 19 Янв 2020 в 15:38