Testing in Jetpack Compose – 동기화

작성하는 모든 테스트는 테스트 대상과 적절하게 동기화(synchronization)되어야 한다. 예를 들어 onNodeWithText와 같은 finder를 사용할 때, 테스트는 시맨틱 트리를 쿼리하기 전에 앱이 유휴 상태가 될 때까지 기다린다. 동기화가 없으면 테스트에서 표시되기 전에 요소를 찾거나 불필요하게 기다릴 수 있다. 이 단계에서는 앱을 실행할 때 다음과 같은 Overview(개요) 화면을 사용한다. ‘Alerts’ 카드의 반복적인 더보기…

Testing in Jetpack Compose – 병합 및 병합해제 된 semantics tree들

시맨틱 트리(Semantics tree)는 항상 관련 정보만 표시하여 최대한 간결하게 만들려고 한다. 예를 들어, TopAppBar에서는 아이콘과 레이블이 다른 노드일 필요가 없다. “Overview” 노드를 살펴보자. 이 노드에는 selectable 컴포넌트에 대해 특별히 정의된 속성(예: Selected 및 Role)과 전체 탭에 대한 콘텐츠 설명(content description)이 있다. 이는 간단한 테스트에 매우 유용한 고수준(high-level) 속성이다. 아이콘이나 텍스트에 더보기…

Testing in Jetpack Compose – 디버깅 테스트

이 단계에서는 현재 탭의 레이블이 대문자로 표시되는지 확인한다. 가능한 해결책은 텍스트를 찾아(find) 대문자가 존재한다고 주장(assert)하는 것이다. 그러나 실행해보면 테스트가 실패하는 것을 확인할 수 있다.😱 이 단계에서는 semantics tree를 사용하여 디버깅하는 방법을 배운다. Semantics tree 컴포즈 테스트는 semantics tree라는 구조를 사용하여 화면에서 요소를 찾고 해당 속성을 읽는다. 이는 TalkBack과 같은 서비스에서 더보기…

Testing in Jetpack Compose – 간단한 UI 테스트 만들기

TopAppBarTest 파일 생성하기 AnimatingCircleTests.kt(app/src/androidTest/com/example/compose/rally)와 동일한 폴더에 새 파일을 만들고 TopAppBarTest.kt라고 이름을 짓는다. 컴포즈는 createComposeRule()을 호출하여 얻을 수 있는 ComposeTestRule과 함께 제공된다. 이 규칙을 사용하면 테스트 중인 Compose 콘텐츠를 설정하고, 상호 작용할 수 있다. ComposeTestRule을 추가하기 격리된 테스트 컴포즈 테스트에서는 예를 들어 Espresso를 사용하여 Android View 에서 수행하는 것과 유사하게 앱의 더보기…

Testing in Jetpack Compose – 무엇을 테스트 해야 할까?

탭 행(Overview, Accounts 및 Bills)이 포함된 Rally의 탭 표시줄에 중점을 둘 것이다. 이 코드랩에서는 bar의 UI를 테스트한다. 이는 많은 것을 의미한다: 탭에 의도한 아이콘과 텍스트가 표시되는지 테스트 애니메이션 사양이 일치하는지 테스트 트리거 된 네비게이션 이벤트가 올바른지 테스트 다양한 상태에서 UI 요소의 배치 및 거리 테스트 bar의 스크린샷을 찍고 이전 스크린샷과 더보기…

Testing in Jetpack Compose – 소개 및 설정

이 코드랩에서는 Jetpack 컴포즈로 만든 UI를 테스트하는 방법을 배운다. 격리 테스트, 디버깅 테스트, 시맨틱 트리 및 동기화에 대해 배우면서 첫 번째 테스트를 작성한다. 전제조건 이 코드랩은 최신의 Android Studio Arctic Fox를 필요로 한다. 다운로드 Android Studio Arctic Fox 필요한 것 최신 안드로이드 스튜디오 Arctic Fox 코틀린 지식 컴포즈에 대한 기본적인 더보기…

Jetpack Compose Navigation – 컴포즈에서 네비게이션 테스트하기

Note: 이 코드랩에서는 컴포즈 테스트의 기본적인 내용을 알려주지 않는다. 이를 알아보려면 컴포즈 레이아웃 테스트 문서 또는 Testing in Jetpack Compose Codelab을 참조하자. TestNavHostController 사용과 같은 네비게이션 코드의 고급 테스트에 대해 자세히 알아보려면 Test Navigation 문서를 참조하자. 이 코드랩의 시작부터 우리는 navController를 컴포저블에 직접 전달하지 않고 대신 콜백을 매개변수로 전달했다. 즉, 더보기…

Jetpack Compose Navigation – 완성된 NavHost 추출하기

이제 NavHost를 완성했다. RallyApp 컴포저블로부터 NavHost를 추출하여 자신만의 함수로 만들 수 있고, 이를 RallyNavHost라고 부르자. 이는 navController와 직접 작업해야 하는 유일한 컴포저블이 될것이다. RallyNavHost 내에서 navController를 생성하지 않음으로써 RallyApp 내에서 상위 구조 일부인 탭 선택을 만드는 데 계속 사용할 수 있다. 또한 원래 NavHost를 호출 하던 곳에서 RallyNavHost(navController)로 교체하여 의도한 더보기…

Jetpack Compose Navigation – 딥 링크 지원 활성화하기

인자 외에도 딥 링크를 사용하여 앱의 목적지를 다른 앱에 노출할 수 있다. 이 섹션에서는 이전 섹션에서 생성한 경로에 대한 새로운 딥 링크를 추가하여, 앱 외부에서 ‘이름’을 통해 직접 개별 계좌로의 딥 링크를 활성화한다. 인텐트 필터 추가하기 시작하려면 AndroidManifest.xml에 딥 링크를 추가하자. VIEW 작업과 BROWSABLE 및 DEFAULT <category>를 사용하여 RallyActivity에 대한 더보기…

Jetpack Compose Navigation – 인자 전달하기

Rally에 몇 가지 새로운 기능을 추가해 보자. Row(행)을 클릭하면 개별 계좌의 세부 정보를 표시하는 Account 화면을 추가하자. Navigation 인자는 경로를 동적으로 만든다. 네비게이션 인자는 하나 이상의 인자를 경로에 전달하고, 인자 타입 또는 기본값을 조정하여 경로 이동 동작을 동적으로 만드는 매우 강력한 도구다. Note: 명명된 인자는 {argument}와 같이 중괄호로 묶여 경로 더보기…