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") 붙여주면 끝!
야 친구목록 db글 올려놨으니까 빨리바바