camp.nextstep.edu.missionutils.test 메서드를 알아보자 - her0807/java-baseball-precourse GitHub Wiki
camp.nextstep.edu.missionutils.test?
요구사항에 이 패키지에 있는 테스트를 통과해야만 한다고 나와있었다.
그런데 처음 보는 테스트 메서드가 많이 있었다.
내부가 어떻게 되어있는지 알아야 요구조건에 대해 파악할 수 있을 것 같아 알아보기로 했다.
미션에서 제공한 테스트 파악
-
게임종료_후_재시작
assertRandomNumberInRangeTest를 활용해서 컴퓨터 랜덤 숫자 값을 지정한다.(1, 3, 5),(5, 8, 9)run으로 프로그램을 시작하고,("246", "135", "1", "597", "589", "2")순으로 입력을 제공한다.assertThat을 사용해서output(출력값)이 ("낫싱", "3스트라이크", "1볼 1스트라이크", "3스트라이크", "게임 종료")로 나오는지 검증한다.
-
예외_테스트
assertThatThrownBy로 예외가 터질 상황을 만들고, 터진 예외가IllegalArgumentException인지 , 1초 이내였는지 확인한다.
-
runMain
- main application 을 수행한다.
assertSimpleTest
테스트가 1초 이내에 가능한지 파악한다.
assertRandomNumberInListTest
pickNumberInRange 를 했을 때 value 부터 ~ values 값이 차례대로 나오게끔 설정한다.
assertRandomUniqueNumbersInRangeTest
pickUniqueNumbersInRange 를 했을 때 value 부터 ~ values 값이 차례대로 나오게끔 설정한다.
assertShuffleTest
shuffle 를 했을 때 value 부터 ~ values 값이 차례대로 나오게끔 설정한다.
느낀점
이전에 프로젝트를 하며 테스트코드를 마주한 적이 있었고, 팀원이 테스트코드를 짜보자고하여
다양한 유료강좌나, tdd 에 관한 책을 사서 본 경험이 있다. 대부분 메서드를 익히는 내용이었다.
맨 처음 우테코에서 제공한 테스트 코드를 봤을 때,
"어떻게 내가 랜덤으로 처리한 로직을 고정 값이 나오게 테스트를 했지?"
"어떻게 자동으로 값을 입력받고 출력이 맞는지 검증했지?" 라고 생각했다.
그리고 직접 테스트 코드 메서드 내부를 보고 "왜?" 라고 생각드는 부분이 있으면 "아!" 할 때까지 깊게 들어가봤더니
위에서 수동적인 자세를 가지고 있을 때보다 진정성있게 이해가 되었다.
아직 테스트 코드가 익숙하지 않지만 친해지기위해 노력해야겠다.