본문 바로가기

전체 글146

Test Driven Development(TDD) Test Driven Development(TDD) 테스트 주도 개발 기법 프로그램의 설계와 구현, 사고의 흐름을 테스트 중심으로 생각하는 개발 방법 개발 순서의 변화 as - is : 구현 -> 테스트 to - be : 테스트를 만든다 -> 구현 익스트림 프로그래밍(XP), 애자일, 폭포수 모델, Test-First Programming 개발 사이클 RED : 실패하는 테스트를 설계(요구사항의 명세) GREEN : 테스트를 성공시킨다(구현) REFACTOR : 구현 코드를 리팩토링 테스트 구조 Given(Arrange) : 상태(state)의 정의(테스트를 수행 할 때 전제 조건) When(Act) : 동작(테스트 실행) Then(Assert) : 검증(동작의 결과(actual)과 예상값(expecte.. 2024. 2. 18.
Controller Test @SpringBootTest 통합테스트 하기에 적절 애플리케이션 컨텍스트를 로드하는데 시간이 걸려서 테스트가 다소 무거운 편이다. @SpringBootTest @BootstrapWith + @ExtendWith JUnit5를 사용 할때 @ExtendWith(SpringExtension.class) 쓰면 안된다. @Test JUnit5 애노테이션 단위 테스트 메소드 지정 @SpringBootTest properties • value, properties: 프로퍼티 설정 • args: 애플리케이션 실행 시 커맨드라인으로 입력하는 인자(옵션) 설정 • classes: ApplicationContext 로딩을 위한 설정 클래스를 직접 지정 • webEnvironment: ApplicationContext 의 웹.. 2024. 2. 18.
ControllerAdvice @GetMapping("/") public String root() throws Exception{ throw new Exception("테스트"); } 결과 : java.lang.Exception: 테스트 BasicErrorController 스프링부트의 기본 응답 BasicErrorController를 상속받아서 응용 할 수 있다. 특정 메소드만 오버라이드 특정 핸들러 메소드를 추가 BasicErrorController의 핸들러 메소드 BasicErrorController.errorHtml() 뷰 응답 BasicErrorController.error() json body 응답 static html 이나 template 파일을 추가해서 커스텀 페이지를 등록하는 법 • 단일 기본 페이지 • /resour.. 2024. 2. 17.
MVC 패턴 - API 설계(2) 요청, 응답 설계 Handler Methods Spring Web에서 사용자의 요청(request)를 받아 응답(response)를 리턴하는 메소드 매핑 정보 요청 응답 @RequestMapping • name: 뷰 템플릿에서 식별할 때 쓰는 이름 • value, path: URI 경로 • method: HTTP method (ex: GET, POST PUT PATCH DELETE) • params: 파라미터 검사 • headers: 헤더 검사 • consumes: 헤더의 Content-Type 검사 • produces: 헤더의 Accept 검사(데이터 타입을 받을 수 있는지?) • @GetMapping • @PostMapping • @PutMapping • @DeleteMapping • @PatchMa.. 2024. 2. 17.
함수형 프로그래밍 함수형 프로그래밍 : 대입문이 없는 프로그램(클린 코딩) 상태가 없다 대입문이 없다 부작용이 없는 순수 함수 불변성 함수형 엔드 포인트 Spring Web의 엔드포인트를 함수형 스타일로 작성하는 방법을 제공 WebMvc.fn routing, request handling 불변성을 고려해서 설계 기존의 DispatcherServlet 위에서 동작 애노테이션 스타일과 함께 사용 가능하다. HandlerFunction = @RequestMapping 입력 : ServerRequest 출력 : ServerResponse 결과 : data RouterFunction = @RequestMapping 입력 : ServerRequest 출력 : Optional data + behavior ex) url mapping 2024. 2. 16.
MVC 패턴(2) - API 설계 어노테이션 기반 설계 컨트롤러 클래스 MVC 패턴 중 핸들러 메소드를 포함하는 컨트롤러 빈을 만드는 과정 @Controller 컨트롤러 빈으로 스프링 컨테이너에 인식 View를 반환하기 위해 사용 객체를 상황에 맞는 ResponseEntity로 감싸서 반환해주어야 한다. Spring MVC Container View 반환 과정 Client는 URI 형식으로 웹 서비스에 요청을 보낸다. DispatcherServlet이 요청을 처리할 대상을 찾는다. HandlerAdapter을 통해 요청을 Controller로 위임한다. Controller는 요청을 처리한 후에 ViewName을 반환한다. DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게.. 2024. 2. 16.
PK FK UK CK PK (Primary Key) 기본키라고 하며 엔티티를 식별하는 대표 키,NULL일 수 없다. FK (Foreign Key) 다른 테이블의 PK를 참조하는 Key 동일한 Domain을 갖는다. 어떠한 테이블에 존재하는 다른 테이블의 정보 이기 때문에 외래 키이다. 참조하고자 하는 Column은 PK 또는 UK이여야 한다. UK (Unique Key) 테이블 내에서 해당 Column의 값은 항상 유일하다. PK와 다른 점은 NULL값이 중복 가능하다. CK (Check) 특정 Column에 값을 입력할 수 있는 범위나 조건을 지정한다. (제약 조건) 2024. 2. 15.
MVC 패턴(1) - 요구사항 설계 요구사항 설계 예제를 만들어 보면서 MVC 패턴 구현 Usecase Diagram 도메인 프로그래머가 문제 해결을 하려는 대상 해결하고자 하는 문제의 영역, 범위 이용자, 이용자 -> 관리자, 장소, 이벤트 ERD-Diagram API 요구사항 정리 종류 uri method 기능 설명 개발 여부 뷰 / GET 루트 페이지 이벤트 조회 페이지로 이동 TRUE /error GET 에러 페이지 일반 에러, 로그인 실패 등 TRUE /login GET 관리자 로그인 페이지 TRUE /sign-up GET 관리자 회원 가입 페이지 TRUE /admin/places GET 장소 관리 페이지 TRUE /admin/places/{place-id} GET 장소 상세 정보 관리 페이지 TRUE /places GET 장소 .. 2024. 2. 15.