[JUnit] 테스트 연습 코드

merci·2023년 1월 8일
0

작성한 코드가 제대로 구현이 되었는지 검증하는 습관을 가져야 한다.
검증을 통해 예상치 못한 에러를 미연에 방지하자

간단하게 메소드를 검증 해보자
먼저 build.gradle에 아래 의존성 중 하나가 있는지 확인

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.23.1'

spring-boot-starter-test에는 JUnit, Spring Test, AssertJ, Mockito, MockMvc등의 라이브러리가 포함되어 있다.

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.junit.jupiter.api.Test;
import com.google.gson.Gson;
import down.dto.PostDto;

public class FetchTest {
	@Test  // 테스트 코드에서 main의 역할
    public void get_test() { //  검증할 메소드 이름 뒤에 '_test' 를 붙이자
        // given
        String download = Fetch.get("http://jsonplaceholder.typicode.com/posts/");
        // System.out.println(download);  // 정상이라면 콘솔에 출력된다
        
        // when
        Gson gson = new Gson();
        PostDto[] postDtos = gson.fromJson(download, PostDto[].class);
        					// 파싱을 하긴 했는데 파싱이 제대로 되었을까 ?

        // verify
        // 내가 넣은값이랑 같은지 확인
        assertThat(postDtos.length).isEqualTo(100);
        assertNotNull(postDtos[0]);
    	}
    }

given 에서 두가지 예외가 발생할 수 있다

  • FileNotFoundException -- 잘못된 주소, 그 주소에 파일이 없음
  • MalformedURLException -- http:// ~ 잘못적음

assertThat(첫번째).isEqualTo(두번째) 는 첫번째 인수의 값과 두번째 인수의 값이 일치한지 확인
assertNotNull() 은 인수의 데이터가 Null이 아닌지 확인
위의 두 메소드로 간단하게 검증을 할 수 있다.
만약 통과하지 못하면




이렇게 검증이 실패하게 된다
통과할 경우 아무런 에러가 뜨지 않는다

여기서 주의점은 기본형 타입들의 숫자를 검증할 경우인데
json 의 데이터를 받을 클래스가 int 같은 기본형 타입으로 필드를 가졌을때
데이터 초기화가 되지 않고 객체가 생성된다면 int 는 0과 같은 기본값으로 초기화가 된다.
이럴경우 실제 json 의 데이터가 0일수도 있고 데이터가 들어오지 않아서 0으로 초기화 됐을 수도 있으므로
테스트 코드가 제대로 검증이 되었는지 확신할 수 없다.
그러므로 int 같은 숫자 타입들은 래퍼클래스로 변경하여 Integer 타입으로 선언해야 한다
객체가 생성되었을 시 속성이 클래스 타입(Integer)일 경우 초기화가 안돼면 기본값으로 null을 가지므로
검증시 null인지 확인하면 데이터를 제대로 불러오는지 검증할 수 있다.

profile
작은것부터

0개의 댓글