GitHub Action에서 Spring Boot Test 에러

Seokjun Moon·2024년 1월 19일
0

삽질로그

목록 보기
10/10

테스트 중요성

테스트의 중요성을 실감할 수 있었던 1차 배포와, 테스트 에러.. 분명 로컬에선 정상적으로 작동하지만, 배포를 해보니 오류가 빈번하게 발생한다...

테스트 코드를 작성하지 않아서 더 그런 것 같다 .... 배포를 했는데 테스트 코드가 없다니, 이게 무슨 소린지 싶겠지만 처음엔 왜 중요할까? 라는 생각이 들어서 작성하지 않았었고, 1차 배포를 하면서 겪었던 많은 에러들을 통해 중요성을 뒤늦게 깨달았다 ...

개발할 때 당연히 테스트 해보지만, 내가 생각한 시나리오 안에서만 하기 때문에 다른 에러가 발생하는 것에 자세히 신경쓰지 못한다. 그래서 예상치 못한 오류들이 자꾸 발생하는 것 같다.

가장 기본적인 빈 문자열 오류가 대표적인 예시다. 키워드 검색 요청을 보낼 때, 키워드가 누락되었다면? 오류 메시지를 응답으로 보내야겠지만, 이런 기본적인 것도 ... 신경쓰지 못했다... 뭐 아무튼! 이런 사소한 것들을 신경쓰지 못하고 배포해서 정말 많은 시행착오를 겪었기 때문에 ... 이젠 테스트 코드에 좀 더 집중하려고 한다.

아무튼!
내가 마추졌던 에러들 중 하나.

GitHub Action 에러

깃허브에 커밋할 때마다 자동으로 컴파일 체크 하도록 했는데, 이상하게 테스트에서 자꾸 에러가 발생한다 ... 대표적으로는

이렇게 contextLoads() FAILED 를 가장 많이 마주쳤다...ㅜㅜ 저 원수같은 오류 ... 아무튼! 테스트 코드에서 에러가 발생했거나, 내 경우는 환경변수 문제들이었다.

@TestPropertySource(properties = {
        "api.search.kakao.key=testKey",
        "api.search.naver.id=testId",
        "api.search.naver.secret:testSecret",
        "security.jwt.secret.access=a11111111111111111111a11111111111111111111a11111111111111111111a11111111111111111111",
        "security.jwt.secret.refresh=a11111111111111111111a11111111111111111111a11111111111111111111a11111111111111111111",
        "api.google.key=1111111111111111111111111111111111111111111111111",
        "api.google.gmail.sender=asdf@asdf.com",
        "api.google.gmail.password=qwer1234",
        "api.report.receiver-email=qwer1234",
        "api.image.cache-size=1000",
        "api.image.cache-schedule=0 0/10 * * * *",
        "api.image.expire=5",
        "api.image.well-known-cache-schedule=0 0 0 * * *",
        "redis.host=localhost"
})
@SpringBootTest(classes = SeeRealviewApplicationTests.class)
class SeeRealviewApplicationTests {

    @Test
    void contextLoads() {
    }

}

이렇게 @TestPropertySource 어노테이션으로 테스트용 환경변수를 주입해주었다. 처음엔 몇개 없어서 저렇게 손수 넣었지만 .. 이것도 나중에 파일 분리해서 따로 관리해야겠다.

그리고 @SpringBootTest 어노테이션에 클래스 지정해주면 대부분 문제들이 해결된다!

이상한 점은...

분명....똑같은 코드가 분명 오류가 뜨던 것들이... 어느 순간 갑자기 정상 작동하는 이상한 경우들이 있다... 이걸 캡쳐해뒀어야 했는데... 위 문제로 보아 DB 연결 문제같은데 잘 모르겠다. 다음에 다시 마주치게 된다면 잘 기록해둬야지

profile
차근차근 천천히

0개의 댓글