에러나 버그나 났을 때,
팀 프로젝트에서 내가 작성한 기능이 오류가 있는 것인지 동료의 코드가 오류가 있는 것인지
프로젝트가 커지면서 기능이 이것저것 엮여있는 경우 버그가 나면 어느 기능이 오류가 나는지
알기 위해서는 테스트 코드를 잘 작성 해놓아야 한다.
테스트는 해당 기능의 패키지에서 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 |