반응형
💋 오늘 공부한 내용
- 오늘도 역시 이리내랑 만나서 카공을 했다.
- 테스트 데이터 격리에 대해서 고민을 좀 해봤다.
- 프로덕션 데이터 vs 테스트 데이터
- 아예 다른 데이터베이스를 사용하도록 test/src application.properties를 별도로 설정해서 분리할 수 있음
- 테스트 코드 간 데이터 격리
- 각 테스트 실행 후 매번 delete함 => 테스트가 중간에 실패하는 경우 다른 데이터가 들어갈 수 있음
- 초기화하는 sql 파일을 별도로 작성해두고 어노테이션으로 설정해 두는 방법
- @Sql(scripts = {"/truncate.sql"}, executionPhase = BEFORE_TEST_METHOD)
- @AfterEach같은 메서드 내에서 직접 설정하는 방법
- 초기화하는 sql 파일을 별도로 작성해두고 어노테이션으로 설정해 두는 방법
- 트랜잭션 사용해서 매 테스트 메서드 후 데이터 롤백
- 도중에 테스트가 실패하더라도, 데이터가 저장되지 않기 때문에 안전함
- 각 테스트 실행 후 매번 delete함 => 테스트가 중간에 실패하는 경우 다른 데이터가 들어갈 수 있음
- 프로덕션 데이터 vs 테스트 데이터
- 서비스 코드까지는 @Transactional 어노테이션으로 해결할 수 있지만, RestAssured 라이브러리를 사용하는 경우에는 어노테이션을 적용할 수가 없다...!
- 왜일까..? 일단 모르겠어서 지피티에게 물어봤는데 현재까지 답변은 아래와 같다. 먼말인지는 알겠는데 와닿지는 않는
- 레벨3에서 인수테스트를 좀 더 체계적으로 잘 작성해보고 싶은데, 이렇게 되면 어떻게 해야하지.....
- 테스트 격리 라이브러리까지 만든 우테코 크루의 글을 읽어보았다.
- 진짜로 매번 데이터를 직접 지우는 방법(sql 실행이 되었든, 메서드 호출이 되었든, 암튼)밖에 없을까..?
- 테스트코드 실행 전마다 Truncate하는 sql을 실행하면, 과연 정말로 안전할까?
- 진짜 저방법밖에 없을까...???!?!?!?!
- 오늘 들으면서 실습한 강의 간단히 정리
💋 감정 회고
- 갑자기 박스터랑 여우한테 공부를 열심히 한다는 말을 들었다.
- 레벨2 동안 먼가 뒤로갈수록ㅋㅋㅌㅋㅌ 펑펑 놀았는데, 방학하고 놀러갔다온 뒤로 정신차린듯 역시 사람은 놀아야해..
💋 오늘의 포스팅
https://engineerinsight.tistory.com/121
[TEST] 테스트 데이터 격리: 테스트용 데이터베이스 분리, 트랜잭션 강제 롤백, @Transactional 어노테
💋 테스트 데이터 격리의 필요성 테스트 코드를 통해 아래 코드를 실행했다. @Test void findItems() { Item item1 = new Item("gitchan", 1000, 10); Item item2 = new Item("irene", 1000, 20); Item item3 = new Item("oing", 1000, 30); i
engineerinsight.tistory.com
반응형
반응형
'TIL > 2023' 카테고리의 다른 글
[TIL] 23.07.03 (0) | 2023.07.04 |
---|---|
[TIL] 23.06.28 (0) | 2023.06.28 |
[TIL] 23.06.21 (2) | 2023.06.21 |
[TIL] 23.06.20 (0) | 2023.06.20 |
[TIL] 23.06.16 (0) | 2023.06.17 |