У меня есть следующий тест Compose UI: < /p>
class PersonCardTest {
@get:Rule
val composeTestRule = createAndroidComposeRule()
@Test
fun personCardTest() {
with(composeTestRule) {
setContent {
PersonCard(
person =
Cast(
"role",
"name",
null,
Gender.MALE,
1,
)
)
}
onNodeWithContentDescription(
activity.getString(
R.string.person_content_description,
"name",
"role",
),
).assertIsDisplayed()
onNodeWithText("role").assertIsDisplayed()
onNodeWithText("name").assertIsDisplayed()
}
}
< /code>
} < /p>
Вот моя Personcard: < /p>
@Composable
fun PersonCard(
modifier: Modifier = Modifier,
person: Credit,
navController: NavController? = null,
) {
Column(
modifier
.padding(TMDb_4_dp)
.clickable {
navController?.navigate("${MainDestinations.TMDB_PERSON_ROUTE}/${person.id}")
},
horizontalAlignment = Alignment.CenterHorizontally,
) {
Card(
shape = CircleShape,
elevation = TMDb_8_dp,
modifier = Modifier.size(TMDb_120_dp),
) {
val request =
ImageRequest
.Builder(LocalContext.current)
.data(person.profileUrl)
.crossfade(true)
.transformations(CircleTopCropTransformation())
.build()
val placeholderPainter = rememberVectorPainter(person.gender.placeholderIcon)
val painter =
rememberAsyncImagePainter(
model = request,
error = placeholderPainter,
placeholder = placeholderPainter,
)
val colorFilter =
when (painter.state) {
is AsyncImagePainter.State.Error, is AsyncImagePainter.State.Loading ->
ColorFilter.tint(
MaterialTheme.colors.imageTint,
)
else -> null
}
Image(
painter = painter,
colorFilter = colorFilter,
contentDescription =
stringResource(
id = R.string.person_content_description,
person.name,
person.role,
),
contentScale = ContentScale.FillHeight,
)
}
Text(
text = person.name,
style = MaterialTheme.typography.subtitle1.copy(fontWeight = FontWeight.SemiBold),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.padding(top = TMDb_4_dp),
)
Text(
text = person.role,
style =
MaterialTheme.typography.subtitle2.copy(
fontWeight = FontWeight.Normal,
fontStyle = FontStyle.Italic,
),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.padding(top = TMDb_2_dp),
)
}
}
< /code>
он не удается с следующим сообщением: < /p>
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] ComposeIdlingResource is busy due to pending recompositions.
- Note: Timeout on pending recomposition means that there are most likely infinite re-compositions happening in the tested code.
- Debug: hadRecomposerChanges = true, hadSnapshotChanges = false, hadAwaitersOnMainClock = false
All registered idling resources: Compose-Espresso link
at androidx.compose.ui.test.EspressoLink_androidKt.rethrowWithMoreInfo(EspressoLink.android.kt:133)
at androidx.compose.ui.test.EspressoLink_androidKt.runEspressoOnIdle(EspressoLink.android.kt:106)
at androidx.compose.ui.test.EspressoLink.runUntilIdle(EspressoLink.android.kt:82)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.waitForIdle(ComposeUiTest.android.kt:596)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.access$waitForIdle(ComposeUiTest.android.kt:391)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$AndroidComposeUiTestImpl.waitForIdle(ComposeUiTest.android.kt:721)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$AndroidComposeUiTestImpl.setContent(ComposeUiTest.android.kt:801)
at androidx.compose.ui.test.junit4.AndroidComposeTestRule.setContent(AndroidComposeTestRule.android.kt:404)
at com.sample.tmdb.common.ui.component.PersonCardTest.personCardTest(PersonCardTest.kt:22)
... 64 trimmed
Caused by: androidx.test.espresso.IdlingResourceTimeoutException: Wait for [Compose-Espresso link] to become idle timed out
at androidx.test.espresso.IdlingPolicy.handleTimeout(IdlingPolicy.java:4)
at androidx.test.espresso.base.UiControllerImpl$5.resourcesHaveTimedOut(UiControllerImpl.java:1)
at androidx.test.espresso.base.IdlingResourceRegistry$Dispatcher.handleTimeout(IdlingResourceRegistry.java:4)
at androidx.test.espresso.base.IdlingResourceRegistry$Dispatcher.handleMessage(IdlingResourceRegistry.java:6)
at android.os.Handler.dispatchMessage(Handler.java:101)
at androidx.test.espresso.base.Interrogator.loopAndInterrogate(Interrogator.java:14)
at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:8)
at androidx.test.espresso.base.UiControllerImpl.loopMainThreadUntilIdle(UiControllerImpl.java:16)
at androidx.test.espresso.Espresso$1.run(Espresso.java:1)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
< /code>
Я не могу понять, почему. Вы, ребята, есть идеи?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... -timed-out
Компонирование теста пользовательского интерфейса не сбои из -за простоя ресурсных ресурсов ⇐ Android
Форум для тех, кто программирует под Android
1755385301
Anonymous
У меня есть следующий тест Compose UI: < /p>
class PersonCardTest {
@get:Rule
val composeTestRule = createAndroidComposeRule()
@Test
fun personCardTest() {
with(composeTestRule) {
setContent {
PersonCard(
person =
Cast(
"role",
"name",
null,
Gender.MALE,
1,
)
)
}
onNodeWithContentDescription(
activity.getString(
R.string.person_content_description,
"name",
"role",
),
).assertIsDisplayed()
onNodeWithText("role").assertIsDisplayed()
onNodeWithText("name").assertIsDisplayed()
}
}
< /code>
} < /p>
Вот моя Personcard: < /p>
@Composable
fun PersonCard(
modifier: Modifier = Modifier,
person: Credit,
navController: NavController? = null,
) {
Column(
modifier
.padding(TMDb_4_dp)
.clickable {
navController?.navigate("${MainDestinations.TMDB_PERSON_ROUTE}/${person.id}")
},
horizontalAlignment = Alignment.CenterHorizontally,
) {
Card(
shape = CircleShape,
elevation = TMDb_8_dp,
modifier = Modifier.size(TMDb_120_dp),
) {
val request =
ImageRequest
.Builder(LocalContext.current)
.data(person.profileUrl)
.crossfade(true)
.transformations(CircleTopCropTransformation())
.build()
val placeholderPainter = rememberVectorPainter(person.gender.placeholderIcon)
val painter =
rememberAsyncImagePainter(
model = request,
error = placeholderPainter,
placeholder = placeholderPainter,
)
val colorFilter =
when (painter.state) {
is AsyncImagePainter.State.Error, is AsyncImagePainter.State.Loading ->
ColorFilter.tint(
MaterialTheme.colors.imageTint,
)
else -> null
}
Image(
painter = painter,
colorFilter = colorFilter,
contentDescription =
stringResource(
id = R.string.person_content_description,
person.name,
person.role,
),
contentScale = ContentScale.FillHeight,
)
}
Text(
text = person.name,
style = MaterialTheme.typography.subtitle1.copy(fontWeight = FontWeight.SemiBold),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.padding(top = TMDb_4_dp),
)
Text(
text = person.role,
style =
MaterialTheme.typography.subtitle2.copy(
fontWeight = FontWeight.Normal,
fontStyle = FontStyle.Italic,
),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.padding(top = TMDb_2_dp),
)
}
}
< /code>
он не удается с следующим сообщением: < /p>
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] ComposeIdlingResource is busy due to pending recompositions.
- Note: Timeout on pending recomposition means that there are most likely infinite re-compositions happening in the tested code.
- Debug: hadRecomposerChanges = true, hadSnapshotChanges = false, hadAwaitersOnMainClock = false
All registered idling resources: Compose-Espresso link
at androidx.compose.ui.test.EspressoLink_androidKt.rethrowWithMoreInfo(EspressoLink.android.kt:133)
at androidx.compose.ui.test.EspressoLink_androidKt.runEspressoOnIdle(EspressoLink.android.kt:106)
at androidx.compose.ui.test.EspressoLink.runUntilIdle(EspressoLink.android.kt:82)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.waitForIdle(ComposeUiTest.android.kt:596)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment.access$waitForIdle(ComposeUiTest.android.kt:391)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$AndroidComposeUiTestImpl.waitForIdle(ComposeUiTest.android.kt:721)
at androidx.compose.ui.test.AndroidComposeUiTestEnvironment$AndroidComposeUiTestImpl.setContent(ComposeUiTest.android.kt:801)
at androidx.compose.ui.test.junit4.AndroidComposeTestRule.setContent(AndroidComposeTestRule.android.kt:404)
at com.sample.tmdb.common.ui.component.PersonCardTest.personCardTest(PersonCardTest.kt:22)
... 64 trimmed
Caused by: androidx.test.espresso.IdlingResourceTimeoutException: Wait for [Compose-Espresso link] to become idle timed out
at androidx.test.espresso.IdlingPolicy.handleTimeout(IdlingPolicy.java:4)
at androidx.test.espresso.base.UiControllerImpl$5.resourcesHaveTimedOut(UiControllerImpl.java:1)
at androidx.test.espresso.base.IdlingResourceRegistry$Dispatcher.handleTimeout(IdlingResourceRegistry.java:4)
at androidx.test.espresso.base.IdlingResourceRegistry$Dispatcher.handleMessage(IdlingResourceRegistry.java:6)
at android.os.Handler.dispatchMessage(Handler.java:101)
at androidx.test.espresso.base.Interrogator.loopAndInterrogate(Interrogator.java:14)
at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:8)
at androidx.test.espresso.base.UiControllerImpl.loopMainThreadUntilIdle(UiControllerImpl.java:16)
at androidx.test.espresso.Espresso$1.run(Espresso.java:1)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
< /code>
Я не могу понять, почему. Вы, ребята, есть идеи?>
Подробнее здесь: [url]https://stackoverflow.com/questions/79737504/compose-ui-test-fails-due-to-idling-resource-timed-out[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия