2. JUnit 진짜로 써 보기
2021-08-21 00:00:00 # JUnit

2.1 테스트 대상 이해: Profile 클래스

  • 구직 웹 사이트 예제
  • 구인자와 구직자는 둘 다 다수의 객관식 혹은 yes-no 질문에 대한 대답을 하는 프로파일을 생성한다.
  • 첫 번째 예시 코드를 보고 어떤 애플리케이션을 개발하려고 하는지 파악해보기

2.2 어떤 테스트를 작성할 수 있는지 결정

  • 테스트 코드를 작성하려고 하면 정말 많은 테스트를 만들 수 있음
  • 충분히 테스트하기 위한 테스트 코드를 얼마나 작성해야 할까?
  • 새로 작성한 코드에 테스트 코드를 작성할 때는 가장 신경 쓰는 부분이 어디인지 알고 있어야 한다.

2.3 단일 경로 커버

  • matches() 메서드 안에 있는 코드를 분석해보면 유용한 Criteria 객체를 어떻게 만들어야 할지 가늠할 수 있다.
  • 겉보기에는 의도한대로 만든 것 같은 테스트 완성

2.4 두 번째 테스트 만들기

  • 각 단위 테스트는 고유 맥락을 갖는다.
  • JUnit은 결정된 순서로 테스트를 실행하지 않으며, 모든 테스트는 다른 테스트 결과에 영향을 받지 않는다.
  • 2.3과 유사한 테스트를 작성해보면서 공통적인 부분이 보인다.

2.5 @Before 메서드로 테스트 초기화

  • 공통적인 초기화 코드가 있다면 @Before 메서드로 이동시켜보자
  • 여러 테스트를 실행 시 작동 순서
  1. JUnit은 새로운 ProfileTest 인스턴스를 생성
  2. @Before 메서드를 호출하여 profile, question, criteria 변수를 적절한 인스턴스로 초기화
  3. 테스트 메서드를 실행하고 테스트가 통과 혹은 실패했는지 표기
  4. 새로운 인스턴스에 대해 @Before 메서드를 호출하여 필드를 초기화 (테스트 메서드마다 반복하여 초기화 한다.)
  5. 다른 테스트 메서드를 호출

2.6 ~ 2.7 결론

  • 아직 테스트를 위한 경로가 더 있을 것이다.
  • 단위 테스트를 작성하는 것은 훈련이 필요하다.
  • 단지 assert 문을 넣는다고 되는 게 아니다.