Glance 단위 테스트 API를 사용하면 뷰를 확장하지 않고 Glance 코드를 테스트할 수 있습니다.
UI 자동화 도구가 필요할 수 있습니다 예를 들어 단위 테스트 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