728x90
Test 코드 사용 이유
제가 개발 공부를 시작한 시점에 Test코드를 작성하면서 개발하라는 말을 들었을 때
그냥 Application을 실행해서 확인하면 되는데 굳이? 라는 생각으로 Test Code를 작성하지 않고 개발을 했었습니다.
처음엔 Application이 단순하기 때문에 상관없지만 사용하는 기술 Stack이 늘어나고 MSA구조의 Application을 개발하면서 APplication 서버를 한번 실행할 때 다른 서버들도 실행되야하고 특정 API 사용 전에 준비해야하는 메서드들도 실행
해야하는 등의 자원소모가 많아지면서 Test 코드가 중요한 이유를 알게되었습니다.
Test Code란
Test Code란 실제 Applicationd을 실행하기 전에 비즈니스 로직이 제대로 작동되는지를 확인하기 위한 코드입니다.
Test 코드에는 단위 테스트(Unit),통합 테스트(Integration)이 있습니다.
단위 테스트는 쉽게 말해 하나의 기능이나 메서드와 같이 작은 단위를 확인하기 위한 코드이고,
통합 테스트는 모듈 전체의 호환성과 비즈니스 로직을 확인하기 위한 코드입니다.
하나의 기능을 검증하고 싶다면 단위 테스트를, 전체 어플리케이션이 정상적으로 동작하는지 검증하고 싶다면
통합 테스트를 진행하는 것입니다.
JUNIT
JUNIT이란 자바 테스트 코드를 쉽게 사용할 수 있게 해주는 프레임 워크입니다.
JUNIT에 대한 의존성을 추가한 뒤 사용할 수 있습니다.
JUNIT의 Assert메서드는 검증 기능을 합니다. 아래 메서드가 Assert 메서드에 해당하는 메서드들입니다.
.asserThat(a,matcher) | 비교 대상 a를 matcher라는 조건으로 비교한다. org.hamcrest.CoreMatchers 클래스에 선언된 메소드를 JUnit의 matcher로 사용할 수 있다. |
assertEquals(a, b) | 객체 a, b가 일치함을 확인한다. |
assertSame(a, b) | 객체 a, b가 같은 객체임을 확인한다. |
assertTrue(a) | 조건 a가 true인가를 확인한다. |
assertNotNull(a) | 객체 a가 null값을 가지지 않음을 확인한다. |
assertArrayEquals(a, b) | 배열 a, b가 일치함을 확인한다. |
API TEST 코드
검증을 하는 이유가 데이터의 일치 여부도 있지만 API호출이 정상적으로 되는지도 있습니다.
예를 들어 Controller에서 매핑 메서드가 제대로 동작하는지를 알고싶다면 실제로 요청을 보내서 확인해야 합니다.
API호출 테스트에는 PostMan이라는 Application을 통해서 하는 방법도 있지만 이 방법은 실제 Applicaiton의 서버를
실행해야 할 수 있기 때문에 복잡한 Application에는 적용하기 힘든 방법입니다.
이 때 Mock을 이용하면 Test코드를 쉽게 적용할 수 있습니다.
다음 글에서 Mock에대해 설명하겠습니다.
'Spring Boot' 카테고리의 다른 글
Swagger (0) | 2024.03.14 |
---|---|
Transaction (0) | 2024.02.14 |
ObjectMapper (0) | 2024.01.27 |
리액티브 프로그래밍 (0) | 2024.01.15 |
Validation (0) | 2024.01.09 |