junit4

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...
Dummy란 무엇인가? Test Doubles에서 Dummy란 어떤 함수를 호출하든 응답값으로 빈 값을 주는 객체를 뜻한다. 이러한 Dummy는 반환값이 필요없는 객체의 반환값을 설정하기 위해 사용한다. 하지만, 순수한 의미의 Dummy는 응답값이 설정되는 순간부터는 Stub이 되기 때문에 사용처가 한정된다. 테스트를 위한 환경 설정 이 글에서는 ManyGetRepository를 주입 받는 ManyGetUseCase를 테스트 한다. class ManyGetUseCase( private val manyGetRepository: ManyGetRepository ) { fun callGet(int: Int): Int = when (int) { 0 -> manyGetRepository.getA() 1 -> ma..
입력값을 특정 값으로 지정하는 것의 한계 입력값을 다음과 같이 지정하게 되면, getNameByUserId에 0xffffffff이 입력되었을 때만 "TestUser"이 반환된다. every { userRepository.getNameByUserId("0xffffffff") } returns "TestUser" 그렇다면 만약 유효한 아이디 일 경우에 "TestUser"을 반환하고, 유효하지 않은 아이디일 경우에는 예외를 반환하는 목 객체는 어떻게 만들 수 있을까? 만약 유효한 아이디가 8자리의 16진수값이라면, 이에 대한 모든 값에 대해 every를 작성하게 되면 수십억줄의 코드를 작성해야 할 수 있다. 이런 경우 만약 입력 값을 특정 범위로 지정할 수 있다면 매우 도움이 될 것이다. 이를 위해 MockK..
테스트의 Assert의 종류 우리는 테스트를 진행할 때, 단언(Assert)을 통해 기대값과 실제 값을 비교한다. 단언의 기대값과 실제 값이 다르다면 테스트는 실패할 것이고, 같다면 성공한다. 이러한 단언은 단순하게는 객체의 함수를 호출하고 결과값을 받아 해당 값을 비교하는 것부터 시작해, 객체와의 상호 작용을 확인하는 단언들 또한 존재한다. 이번 글에서는 단언에 어떤 종류가 있는지를 알아봄으로써 각 테스트 상황에 맞는 단언을 사용할 수 있도록 한다. 함수의 결과를 확인하는 단언 우리가 다룰 첫 단언은 함수의 결과를 확인하는 단언이다. 함수의 결과를 확인하는 단언은 가장 간단한 단언으로, 입력값과 출력 값이 같아야 하기 때문에 인터페이스의 구현체가 달라지더라도 테스트는 변경될 필요가 없다. 예를 들어 다..
유닛 테스팅이 무엇인지 이해하기 위해서는 유닛이 무엇인지부터 알아야 한다. 유닛이란 무엇인가? 유닛 테스팅의 유닛이란 독립적인(isolated) 기능을 저장하는 컨테이너로, 독립적인 기능을 담는 함수나 클래스 혹은 모듈 모두가 유닛이 될 수 있다. 하지만, 객체 지향 프로그래밍(Object Oriented Programming)에서 유닛은 조금 더 명확한 의미를 가진다. 객체 지향 프로그래밍에서 기능에 대한 책임은 객체에 있으며, 따라서 일반적으로 기능을 담는 객체가 유닛이 된다. 기능을 담는 객체가 유닛이 된다는 것은 기능을 담지 않는 객체는 유닛이 되지 않는다는 뜻이며, Kotlin에서의 data class 나 Java의 POJO 등은 유닛이 되지 못한다. 유닛이 무엇인지 알았으면, 이제 유닛 테스팅..
Dev.Cho
'junit4' 태그의 글 목록