SMTP 실제 발송 테스트 만들면서 다시 본 @SpringBootTest.
@SpringBootTest
class NotificationSubscriberSmtpLiveIntegrationTests {
}
이걸 붙이면 테스트할 때 Spring Context를 올려서
실제 애플리케이션에서 쓰는 Bean들을 같이 사용할 수 있다.
이번 테스트는 메서드 하나만 확인하는 게 아니라
수신자 등록
→ 공지 생성
→ 알림 후보 생성
→ SMTP 발송
→ 발송 상태 저장
이 흐름이 실제로 이어지는지 확인해야 했다.
그래서 단위 테스트보다 @SpringBootTest가 맞았다.
단위 테스트와 비교하면 대충 이렇게 기억하면 될 것 같다.
단위 테스트
특정 클래스나 로직만 확인
빠름
@SpringBootTest
Spring Context를 올림
여러 Bean이 연결된 흐름 확인
상대적으로 무거움
DB는 실제 데이터를 건드리지 않게 테스트용 H2를 따로 사용했다.
@SpringBootTest(properties = {
"spring.datasource.url=jdbc:h2:mem:subscriber-smtp-live;DB_CLOSE_DELAY=-1"
})
여기서 좀 헷갈렸던 건
@SpringBootTest라고 해서 무조건 모든 걸 실제 환경으로 테스트하는 건 아니라는 점.
이번에는
Spring Bean 연결 → 실제
SMTP → 실제
DB → 테스트용 H2
이렇게 필요한 부분만 실제 환경에 가깝게 붙였다.
결국 @SpringBootTest는
Spring 안에서 여러 기능이 연결됐을 때도 제대로 돌아가는지 보고 싶을 때 쓰는 테스트로 기억해두면 될 듯.