• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

선장님 테스트코드 질문있습니다

20.11.14 09:40 작성 조회수 161

0

정확히 해당 강의와는 일치하지 않지만 강의를 보면서 테스트코드 문의드립니다

통합테스트를 진행할때 기존 들어가있어야 할 데이터를 기준으로 테스트가 필요할때가 있는데요.

예로 유저 로그인 테스트다 하면 유저 아이디를 알아야 테스트를 할 수 있고 매뉴별 접근권한 테스트를 한다해도 기존 들어있는 데이터가 있어야 로그인을 통해 세션/토큰을 가져와서 테스트를 할텐데요.

보통 이럴때는 테스트는 어떤식으로 해야하나요!? 개발디비를 바라보고 해야하는지 아니면 메모리h2 데이터베이스를 보고 해야하는지 궁금해서요..

메모리에 올리고 하자니 특정 기능테스트가 여러 테이블에 걸쳐서 가져오는 데이터가 필요할 시 이걸 어떤식으로 넣어놓고 해야하는건가 싶습니다..(로딩과 동시에 메모리에 데이터를 삽입하는쿼리를 넣어놔야하나 싶고요..)

이런 내용 아니어도 계정 수정 테스트다 이러면 이미 계정이 존재해야하는데 이 테스트 시에 매번 계정을 넣고 수정하고를 해야하는지.. 아니면 테스트 순서를 정하고 삽입 수정 삭제와 같은 순서로 동작하도록 테스트를 돌려야하는지(트랜잭션 롤백 안되게 처리 후)..

ㅜㅜ 계속 테스트 감을 못잡고 있어서 문의드립니다 먼저 감사합니다 ㅠㅠ

답변 4

·

답변을 작성해보세요.

1

개발 DB에 들어있는 데이터는 계속 바뀌니까요. 아무래도 테스트는 특정 데이터를 예상하고 작성하는 경우가 있다보니까 테스트용 DB를 따로 쓰는 편입니다.

1

테스트에 필요한 데이터를 넣는 방법은 다양하죠. 테스트용 DB를 따로 만드시고 개발용 DB에서 데이터를 덤프 받아서 테스트 DB에 넣어도 되고, 테스트 실행할 때 소스 코드로 직접 데이터를 만들어 넣어도 되고, 스프링 부트가 지원하는 data.sql을 만들어서 데이터용 리소스 디렉토리에 넣어놓고 사용해도 됩니다

스프링에서 @Transancional이 붙어이는 테스트는 자동으로 롤백됩니다.

0

pyopyo님의 프로필

pyopyo

질문자

2020.11.14

친절한 답변 감사합니다 :) 좋은 하루되세요

0

pyopyo님의 프로필

pyopyo

질문자

2020.11.14

아 빠른답변 감사합니다 보통 기선님은 테스트시에 개발기디비를 직접 활용하진 않으시고 테스트디비 (메모리든 별도의 개발기덤프뜬 데이터든..) 을 사용하시나요?