Glance 단위 테스트 API를 사용하면 뷰를 확장하거나 UI Automator가 필요하지 않고도 Glance 코드를 테스트할 수 있습니다. 예를 들어 단위 테스트 API를 사용하면 hasContentDescriptionEqualTo
또는 isChecked
와 같은 매처를 사용하여 요소가 목록에 있는지 또는 체크박스가 선택되었는지와 같은 조건을 확인할 수 있습니다.
이 API는 가볍고 설정이 덜 필요하므로 위젯의 개별 부분을 개발하고 구성하면서 테스트 주도 개발을 실행하여 코드 재사용을 개선할 수 있습니다.
설정
단위 테스트 라이브러리를 사용하는 데 필요한 종속 항목은 다음 예에 나와 있습니다.
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
테스트 구조
코드 재사용 및 단위 테스트를 사용 설정하려면 GlanceAppWidget
클래스 외부에서 구성 가능한 함수를 구성합니다. 테스트 대상 단위의 복잡성을 최대한 줄입니다.
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
테스트의 컨텍스트 및 크기 설정
컴포저블 함수가 LocalContext.current()
메서드를 사용하여 컨텍스트를 읽는 경우 LocalContext.current()
메서드를 사용하여 컨텍스트를 설정해야 합니다.
그 외의 경우에는 이 단계가 선택사항입니다.
Roboletric과 같은 JVM 기반 Android 단위 테스트 프레임워크를 사용하여 컨텍스트를 제공할 수 있습니다.
컴포저블 함수가 LocalSize
에 액세스하는 경우 테스트에서 컴포저블을 제공하기 전에 테스트의 의도한 크기를 설정합니다. 기본 크기는 349.dp x 455.dp이며, 이는 세로 모드의 Pixel 4 기기에 표시되는 5x4 위젯과 같습니다.
- AppWidget에서
sizeMode == Single
를 사용하는 경우 위젯의info.xml
파일에서 이를minWidth
및minHeight
로 설정할 수 있습니다. - AppWidget이
sizeMode == Exact
를 사용하는 경우 위젯 크기를 결정하는 것과 유사한 방식으로 테스트할 크기를 식별하고 위젯이 표시될 수 있는 가로 모드 및 세로 모드 크기를 식별하여 테스트할 수 있습니다. - AppWidget이
sizeMode == Responsive
를 사용하는 경우sizeMode
를 지정할 때 제공한 목록의 크기 중 하나로 설정할 수 있습니다.
테스트 제한 시간의 기본 기간은 1초이지만, 테스트 인프라에서 다른 제한 시간을 적용하는 경우 runGlanceAppWidgetUnitTest
메서드에 맞춤 기간을 인수로 전달할 수 있습니다.
자세한 내용과 코드 샘플은 runGlanceAppWidgetUnitTest
참조 문서를 확인하세요.