Spring
-
@ParameterizedTest사용할 때 java.lang.NoSuchMethodException 발생 시Spring 2022. 2. 16. 21:09
@ParameterizedTest를 사용하여 여러가지 경우를 테스트 하려고 할 때 java.lang.NoSuchMethodException 예외가 발생하게 되었다. (cannot invoke non-static-method) 원인 @ParameterizedTest @MethodSource("lottoGame") @DisplayName("추첨 번호를 이용하여 올바를 로또 결과를 반환한다.") void match_counts_with_winning_numbers(LottoGame lottoGame, WinningLotto winningLotto, int actual) { //given //when LottoResult lottoResult = lottoGame.draw(winningLotto); //then..
-
existsBy, countBy (JPA)Spring 2022. 2. 13. 18:52
미션을 진행하다가 넘어온 아이디로 조회한 객체가 존재하지 않을 때 예외를 발생시켜야 하는 부분에서 실제 객체를 찾고 null객체인지 확인하는 방법으로 체크를 하였는데 이 부분을 existsBy로 하여 JPA를 활용하도록 피드백을 받게 되었다. null 객체 확인 방법 ( 기존에 하던 방법 ) public ReviewDTO update(ReviewCreateDTO reviewCreateDTO) { if (reviewRepository.findById(reviewCreateDTO.getId()) == null) { throw new ReviewNotFoundException(); } } 하려고 하는 의도가 어떤 것인지 명확하지 않고 불필요한 부분이 존재한다. existsBy public ReviewDTO u..
-
인수테스트 (Acceptance Test) ① 환경 구축 및 작성Spring 2022. 2. 8. 20:10
지난 주, 미션 진행으로 인수테스트 코드를 작성하는 방법을 배웠다. 인수테스트에 대해서 알아보고 미션 수행 후 작성한 코드를 통해서 작성 방법을 정리한다. 인수테스트란 시스템이 예상대로(요구사항대로) 동작하는지 확인할 수 있는 테스트로 개발자 - 테스터 - 고객간의 협업을 기반으로 이루어진다. 인수테스트가 통과되면 우리가 원한대로 기능이 구현되었다는 것을 알 수 있다. 테스트 종류에 따른 의미 테스트 의도 단위 테스트 소프트웨어 설계의 최소 단위(모듈, 컴포넌트)에 맞춰 작성된 테스트 인수 테스트 소프트웨어가 사용자 요구사항을 만족하는지에 맞춰 작성된 테스트 (자동화된 인수테스트는 비용이 저렴) (BLACK BOX) 통합 테스트 단위테스트가 완료된 모듈들을 결합하여 하나의 시스템을 완성하는 과정에 맞춰 ..
-
테스트를 위한 Mock과 그 외의 Test DoubleSpring 2022. 2. 3. 18:49
https://dodop-blog.tistory.com/285 Service Layer의 단위테스트 작성 : (1) Mockito ① 서비스 계층을 테스트 하기 위해서 실제 Repository를 DI하게 된다면 단위테스트를 작성하기 위한 F.I.R.S.T원칙을 위배하게 된다. Fast : @SpringBootTest 어노테이션이 해당 어플리케이션이 모든 빈을 Ioc dodop-blog.tistory.com https://dodop-blog.tistory.com/287 Service Layer의 단위테스트 작성 : (2) Fake 객체 https://dodop-blog.tistory.com/285 Service Layer의 단위테스트 작성 : (1) Mockito ① 서비스 계층을 테스트 하기 위해서 실제..
-
Service Layer의 단위테스트 작성 : (2) Fake 객체Spring 2022. 2. 3. 17:11
https://dodop-blog.tistory.com/285 Service Layer의 단위테스트 작성 : (1) Mockito ① 서비스 계층을 테스트 하기 위해서 실제 Repository를 DI하게 된다면 단위테스트를 작성하기 위한 F.I.R.S.T원칙을 위배하게 된다. Fast : @SpringBootTest 어노테이션이 해당 어플리케이션이 모든 빈을 Ioc dodop-blog.tistory.com https://dodop-blog.tistory.com/286 Service Layer의 단위테스트 작성 : (1) Mockito ② https://dodop-blog.tistory.com/285 Service Layer의 단위테스트 작성 : (1) Mockito ① 서비스 계층을 테스트 하기 위해서 ..
-
Service Layer의 단위테스트 작성 : (1) Mockito ②Spring 2022. 2. 3. 16:19
https://dodop-blog.tistory.com/285 Service Layer의 단위테스트 작성 : (1) Mockito ① 서비스 계층을 테스트 하기 위해서 실제 Repository를 DI하게 된다면 단위테스트를 작성하기 위한 F.I.R.S.T원칙을 위배하게 된다. Fast : @SpringBootTest 어노테이션이 해당 어플리케이션이 모든 빈을 Ioc dodop-blog.tistory.com 이제 우리는 의존 관계에서 독립적으로 ServiceLayer계층을 테스트 진행했다. 하지만 Mock객체는 생성비용이 많이 드는데 그 이유는 @MockBean 의 경우에 컨텍스트를 새로 만들기 때문 이다. Application Context 만약 RepositoryLayer 테스트는 @DataJpaTe..
-
Service Layer의 단위테스트 작성 : (1) Mockito ①Spring 2022. 1. 28. 09:40
서비스 계층을 테스트 하기 위해서 실제 Repository를 DI하게 된다면 단위테스트를 작성하기 위한 F.I.R.S.T원칙을 위배하게 된다. Fast : @SpringBootTest 어노테이션이 해당 어플리케이션이 모든 빈을 Ioc 컨테이너에 등록하고 테스트를 진행하므로 테스트가 느려진다. Independent : repository와 의존관계를 갖는 테스트 를 작성하게 된다면 테스트 대상이 Service계층의 테스트는 Repository에 의존적이 되므로 독립적인 테스트작성이 어려워 진다. Repeatable : DB에 의존적인 테스트는 한번 ID가 생기면 중복되므로 반복 테스트가 어렵다. 테스트 어노테이션 @SpringBootTest 통합테스트, 전체 Bean전체 @WebMvcTest 단위테스트, ..
-
예외처리전략 ( ExceptionHandler ) 2Spring 2022. 1. 13. 18:17
https://dodop-blog.tistory.com/229 예외처리전략 (Exception Handler) 스프링에서 예외처리를 해주자. 예외발생 데이터타입을 일관된 형태로 생성해서 반응하도록 설정해준다. Error Response 먼저 예외의 형태를 잡아주는 클래스를 작성해준다. 메세지와 상태, 시간정 dodop-blog.tistory.com 이전 글에서 예외처리 전략을 이용하여 예외발생 데이터타입을 일관된 형태로 생성해서 반응하도록 설정하는 방법을 알았다. 그런데 여기서 모든 customException을 RuntimeException을 상속받아 중복되는 NotFoundException의 경우에도 모두 ControllerAdvice(GlobalExceptionHandler)에서 일일이 처리해주어야..