Сбой тестирования Compose Android: время ожидания ресурса истекло

Я пытаюсь написать тест для своих композиций. Итак, у меня есть тестовый класс, помещенный в AndroidTest, вот так:

      @HiltAndroidTest
@UninstallModules(AuthenticationModule::class, AppModule::class)
class AuthenticationScreenTest {

    @get:Rule(order = 0)
    val hiltRule = HiltAndroidRule(this)

    @get:Rule(order = 1)
    val composeRule = createAndroidComposeRule<MainActivity>()

    @Inject
    lateinit var setting: Setting

    @Before
    fun setup() {
        hiltRule.inject()
        composeRule.setContent {
            val navController = rememberNavController()
            RefectoryTheme {
                NavHost(
                    navController = navController,
                    startDestination = AuthenticationNavGraph.AuthenticationScreen.route
                ) {
                    composable(AuthenticationNavGraph.AuthenticationScreen.route) {
                        AuthenticationScreen(navController = navController, setting = setting)
                    }
                }
            }
        }
    }


    @Test
    fun checkLoadingButtonExpantion() {
        composeRule.onNodeWithTag(testTag = AUTHENTICATION_SCREEN_LOGIN_BUTTON)
        .assertIsDisplayed()
    }
}

но я продолжаю получать ошибку:

      androidx.compose.ui.test.junit4.android.ComposeNotIdleException: Idling resource timed out: 
possibly due to compose being busy.
IdlingResourceRegistry has the following idling resources registered:
- [busy] androidx.compose.ui.test.junit4.ComposeIdlingResource@a005df5
All registered idling resources: Compose-Espresso link

Эмулятор андроида запускается, тест компилируется успешно, но вроде не может найти объект. Я также добавил тестовый тег к модификатору объекта:

       LoadingButton(
                    buttonText = stringResource(id = R.string.login),
                    isExpanded = state.isLoginExpanded,
                    modifier = Modifier
                        .padding(MaterialTheme.spacing.medium)
                        .align(Alignment.CenterHorizontally)
                        .testTag(AUTHENTICATION_SCREEN_LOGIN_BUTTON)
                ) {
                    viewModel.onEvent(AuthenticationEvent.Login)
                }

Но через 28 секунд я получил ошибку, как указано выше. Что мне не хватает?

1 ответ

Я только что понял, в чем проблема. Я использую Lottie на своем экране, и анимация повторяется бесконечно. Так что я не знаю почему, но кажется, что это не позволяет пройти тестирование. Тесты прошли без проблем, когда я прокомментировал раздел Lottie.

Другие вопросы по тегам