Java

spring 단위 테스트 코드 작성

blackbearwow 2025. 3. 11. 23:32

에러나 버그나 났을 때, 

팀 프로젝트에서 내가 작성한 기능이 오류가 있는 것인지 동료의 코드가 오류가 있는 것인지

프로젝트가 커지면서 기능이 이것저것 엮여있는 경우 버그가 나면 어느 기능이 오류가 나는지 

알기 위해서는 테스트 코드를 잘 작성 해놓아야 한다.

 

 

테스트는 해당 기능의 패키지에서 main과 test만 바뀐 같은 위치에서 테스트한다. 해당 클래스이름 + Test로 클래스 이름을 만드는 것이 국룰이다.

메소드에 @Test를 붙여 테스트를 한다.

메소드에 @BeforeEach를 붙이면 테스트 실행전 실행되는 메소드가 된다.

메소드에 @AfterEach를 붙이면 테스트실행후 실행되는 메소드가 된다.

클래스에 @SpringBootTest를 붙이면 스프링 컨테이너에 빈이 등록된 상태에서 테스트가 진행된다.

 

junit과 assertj의 기능들을 사용해 테스트를 한다.

 

기능
assertThat(a).isEqualTo(b) a와 b가 같은지 (같은 값을 가지는지)
assertThat(a).isNotEqualTo(b) a와 b가 다른지 (같은 값을 가지는지)
assertThat(a).isSameAs(b) a와 b가 같은지 (같은 주소를 가르키는지)
assertThat(a).isNotSameAs(b) a와 b가 다른지 (같은 주소를 가르키는지)
assertThat(a).isInstanceOf(b) a가 b의 인스턴스인지
assertThat(a).isNotInstanceOf(b) a가 b의 인스턴스인가 아닌지
assertThat(a).contains(b, c) a가 b,c를 포함하는지
assertThrows(a,b) b(람다 함수)를 실행시 a 오류가 던져지는지

 

테스트는

// given 테스트 실행 준비

// when 테스트 진행중

// then 테스트 결과 검증

위의 순서대로 진행된다.

'Java' 카테고리의 다른 글

spring 검증(validation, bean validation)  (0) 2025.04.11
spring 로그인 세션과 인터셉터  (0) 2025.04.03
spring 기본 개념  (0) 2025.03.11
thymeleaf 템플릿 엔진  (0) 2025.02.11
spring Controller  (0) 2025.02.08