특정 Composable에 대한 Isolated Test를 위한 createComposeRule 우리는 지금까지 createComposeRule을 사용해 UI 테스트를 진행했다. createComposeRule을 사용하면, 특정한 Composable을 화면에 표시할 수 있고, 해당 UI를 조작해 테스트를 진행할 수 있다. 예를 들어 다음 코드와 같이 CirclePlayButton을 화면에 표시하고, 클릭한 다음, 해당 클릭이 제대로 일어났는지를 테스트할 수 있다. class OnNodeWithContentDescriptionTest { @get:Rule val composeRule = createComposeRule() @Test fun testCircleButtonClick() { // Given va..
테스트
안드로이드 UI 테스트 준비하기 안드로이드 UI 테스트를 위해 다음과 같은 모양의 EmojiTextComposable을 준비하자. @Composable fun EmojiText( modifier: Modifier = Modifier, emoji: String, content: String, contentDescription: String? = null, ) { Card( modifier = modifier.semantics { this.contentDescription = contentDescription ?: "" }, colors = CardDefaults.cardColors(containerColor = Color.LightGray.copy(alpha = 0.2f)), elevation = Card..
@BeforeEach와 @BeforeAll의 차이 @BeforeEach와 @BeforeAll는 실행 시점에 차이가 있다. 둘 모두 테스트 시작 전에 실행되는 것은 같지만, @BeforeEach는 개별 테스트 실행 전에 실행되며, @BeforeAll은 모든 테스트 실행 전에 한 번만 실행된다. @BeforeEach 사용해보기 예를 들어 다음과 같은 SimpleTest 테스트 코드를 살펴보자. class SimpleTest { @BeforeEach fun setUp() { println("Before Each") } @Test fun test1() { } @Test fun test2() { } } SimpleTest 테스트는 @BeforeEach가 붙은 setUp 함수에서 Before Each를 출력하며, ..
코틀린 환경에서 JUnit 프레임웍을 사용한 테스팅 Kotlin 유닛 테스트 환경을 설정하기 위해서는 일반적으로 JUnit 프레임웍을 사용한다. JUnit 프레임웍은 JUnit4와 JUnit5를 모두 사용할 수 있고, 아직 많은 회사들에서 JUnit4를 사용하고 있지만 이번 글에서는 JUnit5를 사용해 개발환경을 설정하는 방법에 대해 다룬다. 프로젝트에 JUnit5 의존성 설정하기 프로젝트에 JUnit5에 대한 의존성을 설정하기 위해서는 build.gradle.kts 스크립트를 다음과 같이 바꿔야 한다. JUnit5를 사용하려면 dependencies 블록의 junit-jupiter-api을 testImplementation을 사용해 컴파일 시간의 의존성을 설정하고, testRuntimeOnly를 사용..
환경 별로 다른 값을 전달하는 것이 중요한 이유 환경 별로 다른 값이 필요한 이유는 환경 별로 아이디/비밀번호 혹은 DB 이름 등이 다를 수 있기 때문이다. 실제로 많은 앱들은 테스트용 환경과 릴리즈 환경을 나누어 놓는데 이는 보안에 매우 중요하다. 이 문제를 해결하기 위해 GitHub Actions는 같은 Key로 Secrets에 접근한다고 하더라도 환경 별로 다른 값을 전달할 수 있는 기능을 제공한다. 이 글에서는 바로 환경 별로 다른 Secrets 를 전달하는 방법에 알아볼 것이다. 환경별로 다른 Secrets 생성하기 환경 별로 다른 Secrets를 생성하기 위해서는 GitHub의 Environment 기능을 설정해야 한다. Environment는 Settings-Environments 에 위치한..