-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Step1 미션 제출합니다 #20
base: briandr97
Are you sure you want to change the base?
Step1 미션 제출합니다 #20
Conversation
…into briandr97
- MethodSource쪽 오류로 has함수에 대한 테스트를 진행하지 못했음
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1단계 미션 고생 많으셨어요 :)
테스트에 익숙해져서 우테코에서도 테스트 마스터로 활약하시길 바라요 ^_____^
우선 어느 부분까지 테스트를 진행해야 하는 지가 많이 헷갈렸습니다.
여기까지 테스트를 해야 하나..? 안 해도 되나..? 특히 override한 toString함수까지도 테스트를 해야 하나 고민됐습니다.
도메인이 어떤 역할을 맡고 있는지에 대해 먼저 생각해보는 것을 연습해보아요 :)
또 LottoTicket의 has에 대한 테스트에서 MethodSource를 이용하여 LottoNumber를 넘겨주었는데 LottoNumber를 int로 암시적으로 변환할 수 없다는 오류 메시지와 함께 실패했습니다,, 근데 어디서 제가 int로 변환하려 했는지 찾지 못했습니다 ㅠ
미션을 급하게 진행하지 않아도 좋으니, 천천히 고민해보면서 문제를 해결해보아요 :)
메서드에서 제공해주는 타입과 파라미터로 받는 타입이 맞지 않아서 생긴 문제일 수도 있겠네요!
val number: Int | ||
) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요기 tailing comma는 지우신 이유가 있을까요 ?_?
// then | ||
assertThat(exception).isInstanceOf(Exception::class.java) | ||
assertThat(exception).hasMessageThat().contains("돈의 액수는 음수가 될 수 없습니다. 입력 값 : $number") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assertAll 로 감싸는 것과 그렇지 않은 것의 차이점은 무엇일까요?
@Test | ||
fun `양수만 받는지 테스트`() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
테스트명이 더 구체적이었으면 좋겠어요 :)
// given | ||
assertThat(exception).isInstanceOf(Exception::class.java) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exception은 Throwable 하위의 Exception 최상위 객체예요.
더 구체적인 Exception instance를 비교해보는 것은 어떨까요?
// then | ||
assertThat(resultMoney.amount).isEqualTo(money3.amount) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
amount를 꺼내 비교하기보다, money객체 자체를 비교해보는 것은 어떨까요?
val errorMessage: String = "로또 티켓에 번호는 6개만 넣을 수 있습니다. 입력 값 : [1, 2]" | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
에러 메시지는 인라인으로 넣어줘도 괜찮아보여요 :)
@Test | ||
fun `로또 번호가 여섯 개일 때 잘 생성되는지 확인 - 기본 생성자`() { | ||
// given | ||
val lottoNumbers = setOf<LottoNumber>( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
잘 생성되는지 까지는 테스트하지 않아도 괜찮아 보여요 :)
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
n1,n2.. 같은숫자들은 인라인으로 넣어도 충분해 보이네요 :)
@Test | ||
fun `로또 번호가 여섯개가 아닐 때 에러 메시지 확인 - 보조 생성자2`() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
부생성자로 생성했을 때 다른 상태를 갖는 것이 아니라면,
코틀린의 모든 생성자는 최상위 생성자를 거치기 때문에, 보조 생성자에 대해 꼭 테스트하지 않아도 된다고 생각해요.
우선 어느 부분까지 테스트를 진행해야 하는 지가 많이 헷갈렸습니다.
여기까지 테스트를 해야 하나..? 안 해도 되나..? 특히 override한 toString함수까지도 테스트를 해야 하나 고민됐습니다.
또 LottoTicket의 has에 대한 테스트에서 MethodSource를 이용하여 LottoNumber를 넘겨주었는데 LottoNumber를 int로 암시적으로 변환할 수 없다는 오류 메시지와 함께 실패했습니다,, 근데 어디서 제가 int로 변환하려 했는지 찾지 못했습니다 ㅠ