[Java] 테스트코드 작성기 - 월별 거래내역 조회 테스트

Hyo Kyun Lee·2024년 12월 31일
0

Java

목록 보기
68/87

이 글에서 이어진다.

1. 개요

현재 MVC 패턴에서 테스트 코드를 통해 컨트롤러, 서비스, 매개변수 전달 등 로직을 구성하거나 진행하면서, 어떠한 취약점이 있을 수 있을지 생각하면서 테스트 케이스를 보완하였다.

테스트 케이스는

  • 사용자 요구사항을 가정한 BDD
  • 로직들 구성할때 확인해야할 사항
  • 조회를 실행한 후 결과에 대해 확인해야할 사항

이렇게 3가지 고려사항을 생각하면서, 테스트 케이스를 작성하는 목적을 생각하면서 작성하였다.

2. 환경 구성

테스트 케이스를 구성하기 위해 다음과 같은 작업을 진행하였다.

  • maven dependency에 junit과 spring-boot-starter-test를 추가하였다.

junit : 4.13.2버전
spring-boot-starter-test : 2.2.4버전

junit 단독적으로 사용할 경우 실제 데이터와 실행 결과에 기반한 테스트가 힘들다.

이를 위해서는 컨트롤러를 통한 api호출이 아닌 bean에 등록된 매퍼 인터페이스를 사용하여 DB조회를 진행해야 하는데, 이때 spring-boot-starter-test가 필요하다.

3. 패키지 경로

패키지 경로 또한 중요한데, 기본적으로 src/test/java 하위에서, 테스트를 진행하고자 하는 src 경로와 일치하는 패키지 디렉토리를 구성하여 경로를 구성해주어야 한다.

예를 들어,
src/main/java에서 com.kidb.mis.mis.DMIS31008.java에 대한 테스트를 진행할 경우,
테스트는 src/test/java에서 com.kidb.mis.mia.DMIS31008Test.java의 테스트 클래스를 생성하고 test케이스를 구성한다.

src/test/java가 build 이미 있다면서 안보이는 경우가 있는데, 이 경우 build path에서 해당 소스 폴더에 클래스가 없어서 build path entries에 missing으로 남겨져 있는 것이다.

이 missing한 부분을 삭제하고 다시 add folder해주거나, 직접 해당 경로를 구성해주면 된다.

2번, 3번 항목을 모두 확인하고 maven library까지 잘 확인하였다면 테스트 환경 구성은 완료이다.

4. 테스트 케이스 구성

월별 거래내역 조회에 대한 테스트 케이스는 하기와 같이 3가지로 구성하였다.

처음 생각한 컴파일 관점(매개변수 개수나 매개변수 객체의 null 오류 등)과 실행 관점(조회조건, 조회결과 등)에서 케이스를 작성할 경우 컴파일 관점 케이스가 힘들어서 실행 관점에서의 케이스만 작성하였다.

사용자 요구사항과 로직의 구성, 결과 확인을 위해
1. 매퍼 동작을 위한 준비 : 매퍼 구성이 잘 되었는가(null pointer exception)
2. 조회조건 : 조회 매개변수가 잘 구성되었는가
3. 조회 : 조회 되었는가

각각 케이스는 given, when, then으로 구체화하였다.

  1. 매퍼 구성이 잘 되었는가
    given : 조건DTO(체결일자) 구성한다.
    when : 조건DTO에 대한 조회를 실시하였을때
    then. : 정상 조회 진행 및 리스트 20개가 산출된다.

이는 매퍼 구성, 즉 시스템 환경 구성에 대한 부분이므로 조회가 된다면 자동으로 만족할 수 있는 케이스이다.

  1. 조회조건 구성
    given : 조건DTO(체결일자)를 구성한다.
    when : 조건DTO의 getter를 호출하였을때
    then : 조건으로 구성한 체결일자가 정상적으로 초기화, 참조된다.

  2. 조회(1번과 동일)
    given : 조건DTO(체결일자)를 구성한다.
    when : 조건DTO에 대한 조회를 실시하였을때
    then : 정상 조회 진행 및 리스트 20개가 산출된다.

test case는 asseetnotnull, assertequal 두가지로 진행하였다.

최초 구성을 잘못해서 null pointer exception이 발생하였으나, 메이븐 업데이트 후에 정상적인 테스트 동작을 진행할 수 있었다.

5. 참고자료

오류발생 시 참고한 자료들
https://web-developer-backend.tistory.com/m/6
https://carrotweb.tistory.com/94#google_vignette

0개의 댓글

관련 채용 정보