DB와 CI 구축

춤인형의 개발일지·2025년 3월 25일

Spring실습

목록 보기
40/40

CI는 테스트를 자동으로 해주는 깃허브 action의 한 종류이다.
테스트 자동화 시스템이다.

내가 CI를 구축하고, 실행했는데 내 local테스트에서는 잘 돌아가던 테스트가 CI를 거치니 에러가 난 상황이였다.

@SpringBootTest
public class ProgrammerQueryRepositoryTest {

    @Autowired
    ProgrammerQueryRepository programmerQueryRepository;

    @Test
    void 시간_측정() {
        programmerQueryRepository.findAll(List.of(), 3, PageRequest.of(1, 20));
    }
}

상황은 이렇다.

이 테스트는 findAll했을 때 시간이 얼마나 걸리나를 측정해보고 싶어 만든 테스트이다. 그래서 findAll함수는 Repository에서 데이터들을 다 보고 확인하게 된다.
나는 현재 dbear, postsql을 켜놓은 상태이다.
그래서 내 local테스트에서는 db를 마음대로 왔다갔다 할 수 있는 것이다.
하지만 CI는 독립된 리눅스환경을 켜놓고 테스트를 실행하기 때문에 에러가 나는 것

repository의 역할?

  • 데이터베이스에 데이터 저장, 저장된 데이터 조회 등

repository 테스트를 한다는건 데이터베이스를 왔다갔다 하며 테스트를 한다는 것이다.
하지만 CI는 독립된 환경에서 테스트를 실행하기에 그곳에는 데이터베이스가 없기 때문에 당연히 에러가 날 수밖에 없다.
그래서 에러코드보면 뭐 auto~~~ 이런식으로 난다.

결론은 테스트용 db를 만들어둬야한다. 그게 바로 테스트분리!
그래서 @ActiveProfiles("test") 붙여주면 끝!

1개의 댓글

comment-user-thumbnail
2025년 4월 9일

야 친구목록 db글 올려놨으니까 빨리바바

답글 달기