스프링 기본 개념 정리4 - JUnit, Given-When-Then

진용완·2025년 5월 15일
0

이 포스팅은 신선영 저, 『스프링 부트 3 백엔드 개발자 되기』(골든래빗, 2023)를 공부하면서 핵심 개념들을 정리하기 위해 작성하였습니다.

4장. 스프링 부트 3와 테스트

   작성한 코드가 제대로 동작하는지 확인하기 위해서 앱 전체를 실행하는 것은 비효율적이다. 그래서 스프링 부트에서는 JUnit이라는 프레임워크를 이용하여 코드를 테스트한다.

□ JUnit
  JUnit이란 자바 언어로 단위 테스트를 할 수있는 프레임워크이다. 단위 테스트란 작은 단위로 코드가 제대로 작동하는지 검증하는 것을 의미한다. 주로 메서드 단위로 테스트를 진행한다. 메서드들은 각각 독립적으로 테스트된다. 또한 한 개의 메서드라도 목표한 결과가 나오지 않으면 전체 테스트가 실패한 것으로 표기된다. 사용 방법이 단순하고 즉각적이고 직관적으로 피드백을 제공하기 때문에 널리 쓰인다.


   JUnit에서 메서드 앞에서 주로 사용되는 에너테이션들은 다음과 같다.

□ @DisplayName("내용")
  콘솔창에서 어떤 테스트를 진행했는지 표기해준다.

□ @Test
  해당 메서드를 테스트한다.

□ @BeforeAll
  전체 테스트를 맨 처음 시작할 때에 한 번만 해당 메서드를 테스트한다. 이때 반드시 static이라는 키워드를 써줘야 한다.

□ @BeforeEach
  에너테이션 @Test가 붙은 메서드들을 테스트를 시작하기 전마다 해당 메서드를 매번 테스트한다.

□ @AfterAll
  전체 테스트의 맨 마지막에 한 번만 해당 메서드를 테스트한다. 이때 반드시 static이라는 키워드를 써줘야 한다.

□ @AfterEach
  에너테이션 @Test가 붙은 메서드들의 테스트가 끝날때마다 해당 메서드를 매번 테스트한다.

   한편 테스트할 메서드들이 모여있는 클래스 앞에서 주로 사용되는 에너테이션들은 다음과 같다.

□ @SpringBootTest
  클래스 이름이 OOOTest로 되어있을 경우, 에너테이션 @SpringBootApplication이 붙은 클래스 중에서 이름이 OOO으로 되어있는 클래스를 찾은 뒤, OOO 클래스의 빈을 생성하고, 테스트용 애플리케이션 컨텍스트를 생성한다.

□ @AutoConfigureMockMvc
  애플리케이션을 서버에 배포하지 않고도 가상으로 MVC 환경을 만들어서 테스트할 수 있게 한다. 이 에너테이션은 컨트롤러(프레젠테이션 계층)을 테스트할 때에 사용된다.


   메서드를 테스트할때 작성하는 코드에는 일련의 패턴이 있다. 이때 사용되는 패턴을 given-when-then 패턴이라고 부른다.

□ given
  메서드를 테스트하기 위해 필요한 준비 작업을 하는 단계이다. 컨트롤러를 테스트할 경우, 변수를 미리 지정하거나 레포지토리를 통해 데이터베이스에 데이터를 저장해두는 작업이 given에 속한다.

□ when
  테스트할 기능을 작성하는 단계이다. 컨트롤러를 테스트할 경우, 어떤 url을 받는지, 그리고 결과물을 어떤 형태로 반환할 것인지를 설정한다.

□ then
  when 단계에서 나온 결과물과 given 단계에서 미리 지정한 값들이 일치하는지 확인하는 단계다. 서로 일치하면 테스트는 통과되고, 그렇지 않으면 테스트는 통과되지 않는다.

0개의 댓글