2022年5月6日金曜日

Compose のテストで No compose hierarchies found in the app エラーがでた場合

次のような Compose のテストを実行したときに class ComposeTest { @get:Rule val composeTestRule = createComposeRule() @Test fun myTest() { composeTestRule.setContent { Text("Hello") } composeTestRule.onNodeWithText("Hello").assertIsDisplayed() } }
java.lang.IllegalStateException: No compose views found in the app. Is your Activity resumed?

(1.1 系)


java.lang.IllegalStateException: No compose hierarchies found in the app. Possible reasons include: (1) the Activity that calls setContent did not launch; (2) setContent was not called; (3) setContent was called before the ComposeTestRule ran. If setContent is called by the Activity, make sure the Activity is launched after the ComposeTestRule runs

(1.2 系)

というエラーがでる場合、テストを実行しているエミュレータやデバイスの画面が off になっていないかチェックしましょう。

2022年5月5日木曜日

Espresso test 3.4.0 で Duplicate class org.checkerframework.checker エラーが出る場合

espresso-contrib から org.checkerframework:checker を exclude します。 androidTestImplementation "androidx.test.espresso:espresso-core:3.4.0" androidTestImplementation("androidx.test.espresso:espresso-contrib:3.4.0") { exclude group: "org.checkerframework", module: "checker" }

ref : https://github.com/android/android-test/issues/861

2022年4月30日土曜日

LazyColumn/LazyRow で content types を使う

LazyColumn( modifier = Modifier.fillMaxSize(), state = rememberLazyListState() ) { item( contentType = "header" ) { Text( text = "Header", modifier = Modifier .padding(16.dp) .fillParentMaxWidth() ) } items( count = 100, contentType = { "item" } ) { Text( text = "Item : $it", modifier = Modifier .padding(16.dp) .fillParentMaxWidth() ) } }