실제 SMTP를 보내는 테스트는
평소 테스트 실행 때마다 돌면 안 됐다.
그래서 이걸 썼다.
@EnabledIfEnvironmentVariable(
named = "BIZ_ASSIST_SUBSCRIBER_SMTP_LIVE_TEST",
matches = "true"
)
@EnabledIfEnvironmentVariable은
특정 환경변수가 조건에 맞을 때만 테스트를 실행한다.
이번에는
BIZ_ASSIST_SUBSCRIBER_SMTP_LIVE_TEST=true
일 때만 SMTP Live 테스트가 실행된다.
환경변수가 없거나 값이 다르면
테스트 자체를 건너뛴다.
이게 필요했던 이유는 단순했다.
일반 테스트
→ 자동으로 돌려도 됨
SMTP Live 테스트
→ 실제 메일이 발송됨
→ 명시적으로 실행할 때만 돌아야 함
그래서 테스트 코드 자체에
실행 조건을 걸어뒀다.
이번 테스트에서는 조건을 통과한 뒤에도
실제 메일 발송에 필요한 값들을 한 번 더 확인했다.
String recipient = required("BIZ_ASSIST_LIVE_SUBSCRIBER_EMAIL");
required("BIZ_ASSIST_MAIL_HOST");
required("BIZ_ASSIST_MAIL_PORT");
required("BIZ_ASSIST_MAIL_USERNAME");
required("BIZ_ASSIST_MAIL_PASSWORD");
required("BIZ_ASSIST_MAIL_FROM");
즉 두 단계였다.
실행해도 되는 테스트인가?
→ @EnabledIfEnvironmentVariable
실행에 필요한 설정이 전부 있는가?
→ required(...)
외부 API나 SMTP처럼
진짜 외부 시스템을 건드리는 테스트는
기본적으로 꺼두고 필요할 때만 명시적으로 켜는 방식
으로 사용하면 될 것 같다.