본문 바로가기

728x90

TIL

[Spring MVC][Spring Rest Docs] 학습 목표 Spring Rest Docs가 무엇인지 이해할 수 있다. 테스트 코드 작성 1).슬라이스 테스트 코드 작성 Spring Rest Docs는 Controller의 슬라이스 테스트와 밀접한 관련이 있다. Controller에 대한 슬라이스 테스트 코드를 작성한다 2).API 스펙 정보 코드 작성 슬라이스 테스트 코드 다음에 Controller에 정의 되어 있는 API 스펙 정보(Response Body, Request Body , Query Parameter 등)를 코드로 작성한다 test 테스크(task) 실행 작성된 슬라이스 테스트 코드를 실행한다 하나의 테스트 클래스를 실행시켜도 되지만 일반적으로 GRadle의 빌드 테스크(task)중 하나인 test task를 실행시켜 API 문서 스니핏.. 더보기
[Spring MVC][API 문서화] 학습 목표 API 문서화가 왜 필요한지 이해할 수 있다. API 문서화란 API 문서화란 클라이언트가 REST API 백엔드 애플리케이션에 요청을 전송하기 위해서 알아야 되는 요청 정보(요청URL(또는URI), request body, query parameter 등)를 문서로 정리한 것을 의미한다 API사용을 위한 어떤 정보가 담겨 있는 문서를 API문서 또는 API 스펙(사양)이라고 한다 API문서는 개발자가 요청 URL&URI 등의 API 정보를 직접 수기로 작성할 수도 있고 애플리케이션 빌드를 통해 API 문서를 자동 생성할 수도있다. API 문서 생성의 자동화가 필요한 이유 한번 작성된 API 문서에 기능이 추가되거나 수정되면 API 문서 역시 함께 수정되어야 하는데 update를 못한경우 클라.. 더보기
[SpringMVC][TDD] 학습 목표 TDD가 무엇인지 이해할 수 있다. TDD란(Test Driven Development, 테스트 주도 개발) 테스트가 개발을 주도하는 방식, TDD는 테스트 코드를 먼저 작성하고 그 다음에 기능을 구현한다. TDD의 개발 흐름을 이해할 수 있다. TDD는 모든 조건에 만족하는 테스트를 먼저 진행한 뒤에 조건에 만족하지 않는 테스트를 단계적으로 진행하면서 실패하는 테스트를 점진적으로 성공시켜 나간다 TDD는 테스트 실행 결과가 "failed"인 테스트 케이스를 지속적으로 그리고 단계적으로 수정하면서 테스트 케이스 실행 결과가 "passed"가 되도록 만든다 TDD는 테스트가 "passed"될만큼의 코드만 우선 작성한다 TDD는 "실패하는 테스트 -> 실패하는 테스트를 성공할 만큼의 기능 구현 -.. 더보기
[Spring MVC][Mockito] 학습 목표 Mock의 의미를 이해할 수 있다. 테스트 세계에서의 Mock은 바로 가짜 객체를 의미한다. Mock객체를 사용하는 이유 위 그림을 보면 MemberController의 postMember() 핸들러 메서드쪽만 테스트해야 되는데 서비스 계층을 거쳐 데이터 액세스 계층 그리고 데이터베이스까지 그 동작 흐름이 끝까지 이어졌다가 되돌아 오기 때문에 슬라이스 테스트라기 보다 통합 테스트에 가깝다. 슬라이스 테스트의 목적은 해당 계층 영역에 대한 테스트에 집중하는 것이다. MemberController에서 MemberService 클래스의 createMember()를 호출하지 않고, MockMemberService 클래스의 createMember()를 호출한다. Mock객체를 이용함으로써 다른 계층과 .. 더보기
[Spring MVC][Slice Test] 학습 목표 슬라이스 테스트(Slice Testing)의 의미를 이해할 수 있다. 슬라이드 테스트란? 단위 테스트의 경우 일반적으로 특정 모듈이나 계층, 기술에 의존적이지 않도록 작성하는 것이 좋다 그런데 단위 테스트만으로는 애플리케이션의 모든 기능이 정상적으로 동작한다고 볼 순 없다. 하나의 애플리케이션은 계층별로 역할이 있고, 계층별로 서로 연동되기 때문에 각각의 계층 별로 잘 작동하는지 테스트를 진행한 후에 마지막으로 통합 테스트를 통해 계층 간의 연동에 문제가 없는지 확인해야 개발자의 테스트 작업이 마무리되는 것이라 할 수 있다. 각 계층에 구현해 놓은 기능들이 잘 작동하는지 특정 계층만 잘라서 테스트하는 것을 슬라이스 테스트라고 한다. 애플리케이션의 특정 수정 사항으로 인해 영향을 받을 수 있는 .. 더보기
[JUnit으로 비즈니스 로직에 단위 테스트 적용하기] 핵심 포인트 JUnit의 기본 사용법을 이해할 수 있다. JUnit은 java언어로 만들어진 애플리케이션을 테스트하기 위한 오픈 소스 테스트 프레임워크로서 사실상 Java의 표준 테스트 프레임워크라고도 한다. assertThrows(NullPointerException.class, () -> getCryptoCurrency("XRP")); } private String getCryptoCurrency(String unit) { return CryptoCurrency.map.get(unit).toUpperCase(); } 첫번째 파라미터에는 발생이 기대되는 예외 클라스를 입력, 두번째 파라미터인 람다 표현식에서는 테스트 대상 메서드를 호출, 두번째 파라미터엔 찾을수 없는 값이 있고 첫번째는 이미 없을껄 알.. 더보기
[Spring][Hamcrest] Hamcrest는 JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다. Hamcrest는 다음과 같은 이유로 JUnit에 지원하는 Assertion 메서드 보다 더 많이 사용된다. Assertion을 위한 매쳐(Matcher)가 자연스러운 문장으로 이어지므로 가독성이 향상 된다. 테스트 실패 메시지를 이해하기 쉽다. 다양한 Matcher를 제공한다. Hamcrest 만으로 던져진(thrown) 예외를 테스트 하기 위해서는 Custom Matcher를 직접 구현해서 사용할 수 있다. 더보기
[Spring MVC][Testing] 학습 목표 테스트를 왜 해야 하는지 이해할 수 있다. 테스트 대상이 무엇이 되었든 간에 테스트를 제대로 잘 거쳐서 테스트 대상이 검증 과정에 잘 통과하게 만들어 최대한 더 나은 결과를 얻기 위해서(모든 테스트가 100퍼센트 완벽하게 이루어질 수 없기 때문) 단위 테스트가 무엇인지 이해할 수 있다. 매번 수작업으로 애플리케이션을 실행시키고, Postman을 열어서 HTTP요청을 보내는 것은 아무래도 비효율적이다 그리고 애플리케이션 전체가 아니라 API계층, 서비스 계층, 데이터 액세스 계층 중에서 하나의 계층만 테스트하고 싶은 경우가 있는데 그러지 못한다 또한 비즈니스 로직에서 구현한 특정 메서드만 테스트하고 싶을때 전체가 아니라 계층별로 테스트 기 할 수 있는 기법을 Spring에서 지원해준다. 그중에 .. 더보기

728x90