- Mockito - https://mangkyu.tistory.com/145
- RepositoryTest는 @DataJpaTest 어노테이션으로 하면 테스트 속도가 빨라진다b
- 테스트에 특정 데이터를 set 해야한다면
ReflectionTestUtils.setField();
- 테스트에 해당 방법을 써야하는지도 우선 고려하자
- 참고 : https://dncjf64.tistory.com/314
- 커스텀 예외 클래스를 생성했다면 메서드도 커스텀 해보자
- ResponseEntity vs @ResponseStatus
- Spring Test 전략
- 외부 라이브러리
DijkstraShortestPath
를 커스텀 해보자 - JGraphT
- Test Double - Dummy, Fake, Stub, Spy, Mock
@AuthenticationPrincipal
를 사용하면 인증된 사용자 정보를 Spring Security가 가져와준다
→ 모든 호출 메서드에 어노테이션 붙여야 할까?
→ interceptor를 이용하면 된다! (사실 어노테이션 쓰는게 젤 쉬움ㅋ)- 3주차 미션에서 인터페이스를 사용하여 RestAssured의 중복 로직을 분리한 적이 있다
→ 하지만 그보다 더 편리한 방법이 있다. 바로 제네릭! - 추가로 제네릭과 관련하여 Controller의 ResponseEntity도 제네릭을 명시해주면 좋다
- 참고 : ResponseEntity와 제네릭
- @Transactional 어디에 걸까
→ 클래스 레벨에는 공통적으로 적용되는 읽기전용 트랜잭션 어노테이션을 선언하고, 추가나 삭제 또는 수정이 있는 작업에는 쓰기가 가능하도록 별도로 @Transacional 어노테이션을 메소드에 선언하는 것이 좋다. - 좋은 코드를 위한 자바 변수명 네이밍
→ List 타입의 변수 이름에 List를 붙이면 Set으로 변경되었을때 Set으로 바꿔줘야 하니 변수명에 List를 붙이는 것은 지양하자
→ 추가로 JPA 메서드명의 경우 List를 반환하면findAllBy~
를 사용하기 - 다이나믹 테스트(Dynamic Test)
- Spring 예제로 보는 SOLID DIP
- junit5 - @Nested
반응형