일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 가비지 컬렉션
- Locking Read
- java
- 스프링
- Synchronized
- 자바
- CAS
- 동시성 문제
- reflection
- Lock
- MVCC
- 동시성
- Atomic Type
- jpa
- 데이터 타입
- Varchar
- Di
- gc
- 가비지 컬렉터
- db
- text
- iterator
- MySQL
- foreach
- 백엔드
- iterable
- Today
- Total
목록테스트 코드 (4)
과정을 즐기자
이번 글에서는 시간, 랜덤 값과 같은 제어할 수 없는 영역을 테스트하는 방법에 대해 작성해보겠습니다.예시로 날짜에 따라 할인을 적용하는 간단한 로직을 만들어보았습니다. Bad - 의존성이 내부에 숨겨져 있음위 코드는 2024년 6월 30일 이전 날짜인 경우에만 2000원의 할인이 적용됩니다.잘 작성한 것 같아보이지만 문제점이 보이시나요? Bad - 테스트하기 어려움 할인 날짜보다 이전/이후 날짜에 따라 할인 적용 여부가 결정되는데 시간의 흐름에 따라 테스트 코드가 달라질 수 있습니다.제어할 수 없는 영역인 시간에 대한 정보가 메소드 내부에 숨겨져 있기 때문입니다.즉, 해당 코드는 테스트 코드를 작성하기가 어렵습니다. 📕 제어할 수 없는 영역은 밖으로 밀어내자이제 이 메소드를 리팩토링하여 테스트할 수 있..
이번 글에서는 프로젝트를 진행하면서 저희 팀이 어떻게 테스트 코드를 작성하고 있는 지에 대해 이야기 해보려고 합니다.저희 팀은 현재 백엔드 개발자가 3명입니다. 테스트 코드를 작성하는 규칙을 정할 때 많은 이야기가 오고 갔습니다.주로 이야기 했던 것은 테스트 코드가 중요하다고 관성적으로 작성하지 말고 "왜" 필요한지를 꼭 인지하며테스트 코드 작성이 서비스 개발에 큰 도움이 되는 것을 느껴보자는 것이었습니다. 테스트 코드가 중요하다는 사실은 수도 없이 들었지만 이전에 해왔던 방식에서 크게 2가지 문제점을 느꼈습니다. 1. 관성적으로 의미 없는 테스트 코드를 작성하지는 않았는가?2. 실질적인 이득을 본 것이 무엇인가? 이러한 문제를 인식하고 안정적이고 견고한 서비스를 개발하기 위해 테스트 코드를 작성하는 규..
각종 블로그 글, 유튜브, 페이스북, 오픈 카톡방, 인프런 글 등을 보다 보면 테스트 코드 작성시 @Transactional의 사용 여부는 끊임없이 논쟁되는 주제 같습니다. 여러 글들을 많이 보았는데 향로님의 블로그에서 이러한 의견들을 잘 정리해놓은 글을 보았습니다. 테스트 데이터 초기화에 @Transactional 사용하는 것에 대한 생각얼마 전에 2개의 핫한 컨텐츠가 공유되었다. 존경하는 재민님의 유튜브 - 테스트에서 @Transactional 을 사용해야 할까? 존경하는 토비님의 페이스북 2개의 컨텐츠에서 테스트 데이터 초기화에 @Transajojoldu.tistory.com정말 책, 강의, 유튜브 등에서만 보았던 존경하는 분들의 의견이 정리되어 있었습니다.테스트 코드에서 @Transactional..
테스트 코드에서 @Transactional은 데이터베이스도 롤백이 되기 때문에 @BeforeEach에서 일일이 repository를 deleteAll 해주지 않고 외래키 문제로 고민할 필요도 없기 때문에 편리합니다.그래서 자주 사용을 했었는데 한가지 문제점이 있습니다. 바로 원래 코드에서 @Transactional이 없더라도 테스트 코드에서 @Transactional을 사용한다면 하나의 트랜잭션으로 묶여 원래 코드와 다른 결과를 나타낼 수 있다는 점입니다. 이 문제점은 예전 글에서 작성한 적이 있습니다. JPA 변경감지 적용이 안될 때JPA 변경 감지 적용이 안된다? 프로젝트에서 리뷰 수정 기능을 구현하고 있는데 JPA에서는 변경 감지(더티 체킹)를 작동한다는 사실을 알고 있었다. 영속성이 유지되는 ..