개별 테스트는 @Test 어노테이션이 붙은 함수로 작성 된다.
assertEquls(기댓값, 실제값) → 첫 인자로 기댓값, 두번째 인자로 실제값을 넣는다.
둘이 같은 지 단언하는 함수이다.
둘이 같으면 테스트가 성공, 다르면 테스트가 실패 이다.
Fake란 실제 객체와 비슷하게 동작되도록 구현된 모방 객체이다.
class FetchUserDataTest {
@Test
fun `Should construct user`() = runBlocking {
//given
val repo = FakeUserDataRepository()
val useCase = FetchUserUseCase(repo)
//when
val result = useCase.fetchUserData()
//then
val expectedUser = User(
name = "Ben",
friends = listOf(Friend("some-friend-id-1")),
profile = Profile("Example description")
)
assertEquals(expectedUser, result)
}
class FakeUserDataRepository : UserDataRepository {
override suspend fun getName(): String = "Ben"
override suspend fun getFriends(): List<Friends> =
listOf(Friend("some-friend-id-1"))
override suspend fun getProfile(): Profile =
Profile("Example description")
}
}
given - when - then
패턴이란?given - when - then
은 테스트 코드를 명확하게 구성하기 위한 대표적인 작성 방식이다.
이 방식은 테스트 코드의 의도와 흐름을 쉽게 파악할 수 있도록 도와준다.
간단한 일시중단 함수를 테스트 할 때는 runBlocking함수를 사용해 코루틴을 만들면 된다.