Conversation
…into briandr97
- MethodSource쪽 오류로 has함수에 대한 테스트를 진행하지 못했음
malibinYun
left a comment
There was a problem hiding this comment.
1단계 미션 고생 많으셨어요 :)
테스트에 익숙해져서 우테코에서도 테스트 마스터로 활약하시길 바라요 ^_____^
우선 어느 부분까지 테스트를 진행해야 하는 지가 많이 헷갈렸습니다.
여기까지 테스트를 해야 하나..? 안 해도 되나..? 특히 override한 toString함수까지도 테스트를 해야 하나 고민됐습니다.
도메인이 어떤 역할을 맡고 있는지에 대해 먼저 생각해보는 것을 연습해보아요 :)
또 LottoTicket의 has에 대한 테스트에서 MethodSource를 이용하여 LottoNumber를 넘겨주었는데 LottoNumber를 int로 암시적으로 변환할 수 없다는 오류 메시지와 함께 실패했습니다,, 근데 어디서 제가 int로 변환하려 했는지 찾지 못했습니다 ㅠ
미션을 급하게 진행하지 않아도 좋으니, 천천히 고민해보면서 문제를 해결해보아요 :)
메서드에서 제공해주는 타입과 파라미터로 받는 타입이 맞지 않아서 생긴 문제일 수도 있겠네요!
| val number: Int | ||
| ) { |
There was a problem hiding this comment.
요기 tailing comma는 지우신 이유가 있을까요 ?_?
| // then | ||
| assertThat(exception).isInstanceOf(Exception::class.java) | ||
| assertThat(exception).hasMessageThat().contains("돈의 액수는 음수가 될 수 없습니다. 입력 값 : $number") |
There was a problem hiding this comment.
assertAll 로 감싸는 것과 그렇지 않은 것의 차이점은 무엇일까요?
| @Test | ||
| fun `양수만 받는지 테스트`() { |
| // given | ||
| assertThat(exception).isInstanceOf(Exception::class.java) |
There was a problem hiding this comment.
Exception은 Throwable 하위의 Exception 최상위 객체예요.
더 구체적인 Exception instance를 비교해보는 것은 어떨까요?
| // then | ||
| assertThat(resultMoney.amount).isEqualTo(money3.amount) | ||
| } |
There was a problem hiding this comment.
amount를 꺼내 비교하기보다, money객체 자체를 비교해보는 것은 어떨까요?
| val errorMessage: String = "로또 티켓에 번호는 6개만 넣을 수 있습니다. 입력 값 : [1, 2]" | ||
|
|
There was a problem hiding this comment.
에러 메시지는 인라인으로 넣어줘도 괜찮아보여요 :)
| @Test | ||
| fun `로또 번호가 여섯 개일 때 잘 생성되는지 확인 - 기본 생성자`() { | ||
| // given | ||
| val lottoNumbers = setOf<LottoNumber>( |
There was a problem hiding this comment.
잘 생성되는지 까지는 테스트하지 않아도 괜찮아 보여요 :)
| val n1 = 1 | ||
| val n2 = 2 | ||
| val n3 = 3 | ||
| val n4 = 4 | ||
| val errorMessage: String = "로또 티켓에 번호는 6개만 넣을 수 있습니다. 입력 값 : [1, 2, 3, 4]" | ||
|
|
||
| // when | ||
| val exception = kotlin.runCatching { LottoTicket(n1, n2, n3, n4) }.exceptionOrNull() |
There was a problem hiding this comment.
n1,n2.. 같은숫자들은 인라인으로 넣어도 충분해 보이네요 :)
| @Test | ||
| fun `로또 번호가 여섯개가 아닐 때 에러 메시지 확인 - 보조 생성자2`() { |
There was a problem hiding this comment.
부생성자로 생성했을 때 다른 상태를 갖는 것이 아니라면,
코틀린의 모든 생성자는 최상위 생성자를 거치기 때문에, 보조 생성자에 대해 꼭 테스트하지 않아도 된다고 생각해요.
우선 어느 부분까지 테스트를 진행해야 하는 지가 많이 헷갈렸습니다.
여기까지 테스트를 해야 하나..? 안 해도 되나..? 특히 override한 toString함수까지도 테스트를 해야 하나 고민됐습니다.
또 LottoTicket의 has에 대한 테스트에서 MethodSource를 이용하여 LottoNumber를 넘겨주었는데 LottoNumber를 int로 암시적으로 변환할 수 없다는 오류 메시지와 함께 실패했습니다,, 근데 어디서 제가 int로 변환하려 했는지 찾지 못했습니다 ㅠ