Switch 요소의 의미: 전환 가능한 요소, 현재 켜짐상태, 눌러서 상호작용
-> 위 의미를 전달하기 위해 시맨틱 속성 사용
컴포저블의 시맨틱 속성을 확인할 수 있다.
1. Role: 현재 보고 있는 요소의 유형 (스위치)
2. StateDescription: 켜짐 상태를 지칭하는 방법
3. ToggleableState: 현재 상태를 지칭
4. OnClick: 클릭 했을 때 호출되는 함수를 지칭
+) 이를 이용한 테스트
val mySwitch = SemanticsMatcher.expectValue(
SemanticsProperties.Role, Role.Switch
)
composeTestRule.onNode(mySwitch)
.performClick()
.assertIsOff()
시맨틱 속성이 Switch인 노드를 찾아 테스트.
Button(onClick = { /*TODO*/ }) {
Icon(
imageVector = Icons.Filled.Favorite,
contentDescription = null
)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text("Like")
}
위 예를 보면 Button의 하위 요소가 병합되고 트리에서 단일 Button 요소로 표현됨을 확인 가능.
병합은 Modifier.semantics(mergeDescendants = true) {}를 호출해 병합