[우테코 (BE)] 3주차 회고록

임홍원·2022년 11월 16일
0

[3주차 미션] - 로또

3주차의 미션은 로또였다.
이번주차에는 요구사항에 저번주의 요구사항에서 많은 요구사항이 추가가 되었다.
이번에는 ApplicationTest, LottoTest에 기본 테스트는 다 통과하였지만, 내가 작성한 기능에 대한 테스트를 작성하지 못해서 아쉬움이 많이 남는다.


마주한 오류들

첫번째 오류 - UnsupportedOperationException

알고보니 ArrayList를 생성할 때 new ArrayList<>() 로 생성하지 않고 직접 할당하면 발생하는 에러였다.

직접 할당한 이유?

Randoms.pickUniqueNumbersInRange 를 살펴보니 반환값이 List<Integer> 여서 직접 할당했다. 그치만 틀린 생각이였다.

해결 방법?

로또 번호를 생성할 때 직접 할당에서 new ArrayList<>(Randoms.pickUniqueNumbersInRange(1, 45, 6)); 로 변경했더니 위 에러는 해결되었다.

두번째 오류 - IllegalArgumentException

ApplicationTest 를 실행했을때 예외테스트에서 발생하였다. try catchIllegalArgumentException 를 throw 했지만 테스트가 통과되지 않았다.

예외테스트 코드를 잘 살펴보니 1000j 라는 입력값을 넣었을때 출력값에 ERROR_MESSAGE 가 포함되어있는지 확인하는 것이였다.

오해했던 이유?

메서드에서 throw new IllegalArgumentException() 을 통해 예외를 발생시키니 분명 예외는 발생시켰는데 왜 계속 테스트를 통과 못하는것인가? 생각했다.
그러다가 프로그램 실행 후 ERROR_MESSAGE 가 포함되어 있는지만 검사하면 되지 않을까 하는 생각이 들었다.
코드에는 분명 ìsInstanceOf() 라는 테스트 메서드가 포함되어 있지 않았는데 말이다.

해결 방법?

Application 을 try catch 문으로 감싸서 IllegalArgumentException 이 발생하면 ERROR_MESSAGE 가 출력 되게 해결하였다.

3주차 미션 후 느낀 점

구현하는데는 크게 어렵지 않았다.
하지만 요구사항에 맞춰서 구현을 하다보니 기능 하나를 만들고 commit을 해야하는데 까먹고 늦게하거나, 아니면 다시하거나 하였다.
이번에는 내가 만든 기능별 테스트코드를 제대로 작성하지 못해서 아쉬움이 크게 남는다.
설계를 하긴 했지만 제대로 설계한 것이 맞을까? 계속 의문이 들었다.
우테코를 하면서 나의 코딩실력이 이렇게 형편없었나? 라는 생각도 계속 들었다.
우테코 프리코스를 통해 조금 더 발전해야겠다.

0개의 댓글