今回は compose のテストに使用する testTag のつける場所についてハマった話をしようと思います。
環境
- compose_version = '1.0.1' - targetSdk 26 - kotlinCompilerVersion '1.5.21'
Text に testTag をつけたら失敗した話
TextButton を使って compose のテストをしようとした際、
「実際にテキストが書いてあるのは Text の方だから、Text の方に testTag つけたらいいだろう」
と思って下記のように testTag をつけていましたが、これでは Node の取得に失敗しました。
TextButton() {
Text(
modifier = Modifier
.testTag(TestTags.CACHE_CLEAR_DIALOG_CANCEL),
text = stringResource(R.string.clear_cache_cancel),
)
}
いろいろ試した結果、TextButton 側(親側)の Modifier に textTag を設定するとうまく Node が取れたうえに、その文字列も期待通りになっていました!
TextButton(
modifier = Modifier
.testTag(TestTags.CACHE_CLEAR_DIALOG_CANCEL),
) {
Text(
text = stringResource(R.string.clear_cache_cancel),
)
}
おわりに
なかなか一発で Node が取れることがなく悲しいです。