Spring-Java/Spring17 단위 테스트(@Mock) 세 줄 요약- 현재 개발 중인 코드가 의존하는 코드는 모킹을 통해 처리할 수 있다.- 목 객체는 그 내용이 없더라도 테스트할 수 있다.- when과 thenResult를 통해 목 객체의 행동을 정의한다. 단위 테스트와 모킹 통합 테스트는 '현재 개발 중인 코드' 외에도 '현재 개발 중인 코드가 의존하고 있는 코드'까지 대상으로 실행되는 반면,단위 테스트는 '현재 개발 중인 코드' 만을 타겟으로 테스트할 수 있습니다. 통합테스트 관련 게시글 보러가기 모킹모킹은 위에서 언급한 것과 같이, 테스트 상황에서 현재 개발 중인 코드가 의존하고 있는 코드를 처리하는 기술입니다.자바에서는 모킹 라이브러리로 'Mockito'를 많이 사용합니다. @ExtendWith(MockitoExtension.class)단위 테스.. 2024. 5. 30. 통합 테스트(@SpringBootTest) 세 줄 요약- 리팩토링 과정에서 결과의 변경 유무를 테스트 코드를 통해 확인해야 한다.- @SpringBootTest는 통합 테스트에 사용되는 어노테이션으로, 두 개 이상의 클래스가 협력할 때 사용한다.- Assertion 클래스의 메소드를 통해 로그 확인없이 테스트의 통과 여부를 확인할 수 있다. 리팩토링과 테스트 코드 리팩토링리팩토링은 '동일한 입력에 대해 결과의 변경 없이 코드 구조가 개선되는 것'을 의미합니다.코드의 구조가 개선되었지만 결과 또한 변경되었다면 리팩토링이라고 볼 수 없습니다.따라서 테스트 코드를 통해 리팩토링 과정에서 결과가 변경된 건 아닌지 확인해야 합니다. 테스트 코드테스트의 종류에는 통합 테스트와 단위 테스트가 있습니다. 통합 테스트2개 이상의 클래스가 협력하여 특정 기능.. 2024. 5. 24. 인터페이스에 의존하는 Repository 세 줄 요약- domain 계층의 인터페이스를 의존하게끔 하면 실행 환경에 따른 빈을 주입받을 수 있다.- 어플리케이션 실행 시점에 주입받을 빈을 결정하기 위해 @Profile 어노테이션을 사용한다.- @Profile 어노테이션과 application.properties 파일을 매핑시켜 각 실행 환경에 따른 설정을 진행한다. 어플리케이션 실행 환경 테스트 vs 서비스테스트 환경 : 로컬 개발 환경과 마찬가지로 DB를 사용하지 않는 Repository서비스 환경 : 각종 서버 간 데이터 공유를 위해 DB를 사용하는 Repository → 인터페이스에 의존하면 이처럼 실행 환경에 따른 의존성을 주입받을 수 있습니다. 인터페이스 의존하기인터페이스에 의존하지 않으면 application 계층(Service.. 2024. 5. 9. DB를 사용하는 Repository 구성 2 세 줄 요약- DB에서 조회할 데이터가 있는 경우 BeanPropertyRowMapper를 통해 받아온다.- query() 메소드는 List 타입을 리턴하고, queryForObject() 메소드는 객체를 리턴한다.- MapSqlParameterSource를 통해 쿼리 파라미터를 Key-Value 형식으로 매핑할 수 있다. 기능 구현 (상품 조회) 해당 게시글에서 이어집니다. GetMapping조회(Read)시에 HTTP 요청은 GET 메소드를 통해 진행됩니다. query( ) / queryForObject( )CRUD 중에서 Read를 위한 메소드입니다.query( )는 List 형태로 리턴하고, queryForObject( )는 객체를 리턴합니다.update() 메소드와 마찬가지로 모두 DataA.. 2024. 5. 8. DB를 사용하는 Repository 구성 1 세 줄 요약- DB를 사용하기 위해선 스키마 및 테이블을 생성해야 한다.- ApplicationRunner를 빈으로 등록해 어플리케이션 시작과 함께 커넥션 풀을 초기화한다.- JdbcTemplate를 통해 쿼리문의 매개변수와 인스턴스 필드들을 매핑시킨다. 스키마 및 테이블 구성 상품관리 어플리케이션에 사용되는 ProductDatabaseRepository에 관한 예제입니다. DB 컨테이너는 지난 게시글에서 생성한 'some-mysql' 컨테이너를 사용합니다. 스키마(SCHEMA) 생성도커 데스크탑 실행 후 bash 쉘에 접속해 아래와 같이 입력해 스키마를 생성합니다. bash 쉘은 명령 프롬프트에서 접속해도 되지만, 간편하게 도커 데스크탑에서 바로 접속할 수 있습니다. CREATE SCHEMA pro.. 2024. 5. 3. 전역 예외 핸들러와 예외 처리 전략 (@ControllerAdvice, @ExceptionHandler) 세 줄 요약- 전역 예외 핸들러를 통해 예외 처리 코드에 대한 유지 보수성 및 기존 코드에 대한 가독성을 높일 수 있다.- @ControllerAdvice 및 @ExeptionHandler 어노테이션을 통해 동일한 예외를 전역적으로 처리할 수 있다.- 사용자 예외를 정의할 땐 RuntimeException을 상속받아 Unchecked Exception으로 만든다. 전역 예외 핸들러 지난 포스팅에서 500 Internal Server Error를 400 Bad Request로 변환해야 한다고 했습니다.전역 예외 핸들러를 이용하면 응답 변환과 더불어 예외 발생시 클라이언트에게 유용한 정보를 함께 제공할 수 있습니다. 전역 예외 핸들러예외 처리에 관한 내용을 모아둔 클래스를 의미합니다.전역 예외 핸들러를 사.. 2024. 4. 26. 이전 1 2 3 다음