테스트에서 사용할 객체 테스트에서 사용할 객체는 다음과 같다. 이 객체들에 대해서는 이전 글에서 이미 설명했고 복잡하지 않은 객체이므로, 추가로 설명하지 않는다. class UserProfileFetcher( private val userRepository: UserRepository, ) { fun getUserProfileById(id: String): UserProfile { return UserProfile( id = id, name = userRepository.getNameByUserId(id) ) } } interface UserRepository { fun saveUserName(id: String, userName: String) fun getNameByUserId(id: String):..
mock
MockK란 무엇인가? MockK는 코틀린에서 테스트 시 목(Mock) 객체를 생성하는 것을 돕는 라이브러리이다. 기존에 목 객체를 만들기 위해서는 인터페이스를 목 클래스로 직접 구현을 해야 했는데, MockK를 사용하면 간단하게 목 객체를 생성할 수 있다. Gradle에 MockK 의존성 추가하기 Gradle에 MockK에 대한 의존성은 다음과 같이 추가해주면 된다. dependencies { ... // MockK 라이브러리 testImplementation("io.mockk:mockk:1.13.8") } MockK의 사용 MockK를 사용하는 것은 매우 간단하다. 예를 들어 다음과 같은 UserProfileFetcher이 있다고 해보자. class UserProfileFetcher( private ..
테스트의 Assert의 종류 우리는 테스트를 진행할 때, 단언(Assert)을 통해 기대값과 실제 값을 비교한다. 단언의 기대값과 실제 값이 다르다면 테스트는 실패할 것이고, 같다면 성공한다. 이러한 단언은 단순하게는 객체의 함수를 호출하고 결과값을 받아 해당 값을 비교하는 것부터 시작해, 객체와의 상호 작용을 확인하는 단언들 또한 존재한다. 이번 글에서는 단언에 어떤 종류가 있는지를 알아봄으로써 각 테스트 상황에 맞는 단언을 사용할 수 있도록 한다. 함수의 결과를 확인하는 단언 우리가 다룰 첫 단언은 함수의 결과를 확인하는 단언이다. 함수의 결과를 확인하는 단언은 가장 간단한 단언으로, 입력값과 출력 값이 같아야 하기 때문에 인터페이스의 구현체가 달라지더라도 테스트는 변경될 필요가 없다. 예를 들어 다..