onNode, onNodeWithTag, onNodeWithText, onNodeWithContentDescription을 통해 UI 노드를 찾을 때의 한계 onNode- 구문을 사용해 UI 노드를 찾으면 한 번에 한 개의 노드 밖에 찾기 못한다. 예를 들어 다음과 컴포저블에 대해 Smile이라는 텍스트를 가진 모든 UI 노드를 찾아 클릭하는 테스트를 해야 한다고 해보자. class OnAllNodesTest { @get:Rule val composeRule = createComposeRule() @Test fun onNodeAllNodes() { // Given val isClicked = Array(4) { false } composeRule.setContent { Column() { EmojiTex..
onNodeWithTag, onNodeWithText, onNodeWithContentDescription을 통해 UI 노드를 찾을 때의 한계점 onNodeWith- 구문을 사용해 UI 노드를 찾게 되면, 특정한 조건 하나만을 가진 UI 노드를 찾게 된다. 만약 같은 값을 공유하는 UI 노드가 있다면 둘 중 하나만이 선택되며, 그 둘을 구분할 수 있는 방법은 없다. 예를 들어 다음과 같이 같은 Smile이라는 이름을 가진 EmojiText Composable이 두 개 있다고 해보자. class OnNodeTest { @get:Rule val composeRule = createComposeRule() @Test fun onNodeWithProblem() { // Given var isSecondSmile..
Composable에 테스트용 태그를 붙이는 방법 Composable에 테스트용 태그를 붙이기 위해서는 Modifier의 semantics 속성을 추가할 때 testTag 프로퍼티를 설정해 주면 된다. 다음 CirclePauseButton Composable은 버튼 전체를 감싸는 Box에 태그를 "Circle Pause Button"으로 붙였다. @Composable fun CirclePauseButton( modifier: Modifier = Modifier, boxSize: Dp, iconSize: Dp = boxSize, boxColor: Color = MaterialTheme.colorScheme.secondary, iconColor: Color = MaterialTheme.colorScheme...
이전 시간에 배운 내용 이전 시간에 우리는 JUnit에서 지원하는 @get:Rule 어노테이션과 함께 createComposeRule을 사용해 ComposeContentTestRule 객체를 만듦으로써 Composable 테스트 환경을 구축하는 방법에 대해 알아보았다. 이후에는 ComposeContentTestRule 객체를 사용해 onNodeWithText를 통해 UI 컴포넌트를 찾는 방법에 대해 다루었다. 이번 시간에는 onNodeWith- 구문을 사용해 더욱 다양한 방법으로 UI 컴포넌트를 찾는 방법에 대해 알아본다. onNodeWithText의 한계 onNodeWithText는 매우 편리한 기능이지만, 텍스트가 있는 컴포넌트를 찾을 때만 쓸 수 있다. 모든 UI 컴포넌트가 텍스트를 가지는 것은 아..
Content Description이란? Content Description이란 안드로이드의 UI 컴포넌트에 설정되는 UI 컴포넌트를 설명하기 위한 값으로, 사용자와 개발자가 비시각적으로 앱과 소통하기 위해 사용된다. 많은 개발자들이 Content Description을 빈 값으로 설정하거나 null 값으로 설정하는 방식을 취하지만, Content Description을 빈 값으로 설정한다면, 시각적인 소통 외에 앱과 소통할 수 있는 방법이 없어진다. 일반적으로 안드로이드 휴대폰을 사용하는 시각 장애인들은 TalkBack 기능을 사용해 스크린을 읽는데, 이 TalkBack에서 사용하는 것이 바로 이 Content Description 값이다. Content Description은 단순히 시각 장애인을 위..