cheese10yun / blog-comment

0 stars 0 forks source link

Sql을 통해서 테스트 코드를 쉽게 작성하자 - Yun Blog | 기술 블로그 #53

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

Sql을 통해서 테스트 코드를 쉽게 작성하자 - Yun Blog | 기술 블로그

Yun Blog | 기술 블로그

https://cheese10yun.github.io/sql-test/

LoveAndCode commented 2 years ago

좋은 포스팅을 올려주셔서 감사합니다. 항상 많은 도움이 되고 있습니다!

한 가지 궁금한점이 있는데요. .sql 파일로 테스트 데이터를 set up 하고, ddl-auto를 none으로 설정한 상태에서 엔티티 클래스에 변경이 있는 경우 (컬럼 명 변경, 컬럼 사이즈 변경 등등), .sql 파일들을 모두 찾아서 수정을 해줘야 할 것 같은데 이러한 경우, 수기로 변경하는 것 이외에 좋은 방법이 있을까요?

엔티티 변경이 테스트 코드 상에는 반영되었지만 *.sql 파일에는 반영이 되지 않아 테스트가 몇 번 실패한 적이 있어서 현재는 Entity Manager를 통해 set up을 하고 있습니다..😂

사족으로는

데이터 Set Up은 Entity Manager를 이용해서 사용하는 것이 훨씬 효율 작이라고 생각이 드실 겁니다

이 부분에 오타가 있는 것 같습니다~!

cheese10yun commented 2 years ago

결론 부터 말씀드리면 좋은 대안은 없습니다.

개인적으로는 테스트 코드에서는 ddl-auto를 none으로하지 않고 사용합니다. 대부분의 테스트 대역에서는 EntityManager 기반으로 given을 작성하는것을 권장합니다.

*.sql 기반으로 셋팅하는 경우는 다음과 같습니다.

  1. spring batch test
  2. 서비스의 디비가 아닌 경우 (어쩔수 없이 DataSource를 2개이상 무는 구조)
  3. Entity Manager를 생성 하지 않은 구조 (2번과 유사)
  4. 특정 시점의 데이터로 set up 필요한경우 (setter가 닫혀 있어 로직으로 구현이 불편한 경우)

1~4에 해당하지 않으면 EntityManager 기반으로 작성하는것이 좋을거 같습니다.