템플릿 메서드 패턴 알아보기
·
Back-end
템플릿 메서드 패턴이란?@Testvoid templateMethodV0() { logic1(); logic2();}private void logic1() { long startTime = System.currentTimeMillis(); // 비즈니스 로직 실행 log.info("비즈니스 로직1 실행"); // 비즈니스 로직 종료 long endTime = System.currentTimeMillis(); long resultTime = endTime - startTime; log.info("resultTime = {}", resultTime);}private void logic2() { long startTime = System.currentTime..
JUnit5, AssertJ 단위 테스트하기(given, when, then)
·
Practice
테스트와 TDD(Test Driven Development)Test란?테스트란 개발된 코드가 기대한 대로 동작하는지 검증하는 일련의 과정이다.테스트를 통해 버그를 사전에 방지하고, 코드의 신뢰성과 유지보수성을 높일 수 있다.테스트에는 유닛 테스트constant1601.tistory.com지난번에는 테스트란 무엇인지 그리고 TDD는 무엇인지에 대해 알아봤다.이번에는 JUnit, AssertJ, Mockito가 각각 무엇이고 이걸 사용해서 어떻게 테스트코드를 작성하는지 알아보자. JUnit과 AssertJJUnit은 자바 애플리케이션의 단위 테스트를 작성하고 실행하기 위한 대표적인 테스트 프레임 워크이다. @DisplayName, @BeforeEach, @AfterEach 등의 어노테이션을 통해테스트 실행 ..
테스트와 TDD(Test Driven Development)
·
Back-end
Test란?테스트란 개발된 코드가 기대한 대로 동작하는지 검증하는 일련의 과정이다.테스트를 통해 버그를 사전에 방지하고, 코드의 신뢰성과 유지보수성을 높일 수 있다.테스트에는 유닛 테스트(클래스나 함수의 로직 점검), 통합 테스트(여러 계층 간의 연동 검증),E2E테스트(사용자 플로우 검증), 성능/부하 테스트 등 다양한 테스트가 있다. 테스트 피라미드테스트 피라미드는 테스트 전략의 개념으로, 상단으로 갈수록 더 복잡하고 시간이 오래 걸리고,하단으로 갈수록 더 작고 빠르게 실행되는 테스트를 의미한다. 단위 테스트(Unit Test)피라미드의 가장 아랫단에 위치하는 단위 테스트란 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지검증하는 절차이고, 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 ..
ThreadLocal를 이용한 로그 추적 (feat. 동시성 이슈)
·
Back-end/Java
요구사항[f8477cfc] OrderController.request()[f8477cfc] |-->OrderService.orderItem()[f8477cfc] | |-->OrderRepository.save()[f8477cfc] | |서비스를 운영하면서 로그를 추적하기 위한 프로그램을 작성한다고 해보자.HTTP 요청의 흐름대로 Controller, Service, Repository에서의 실행시간과 각각의 깊이를 나타내려면 어떻게 해야 할까?가장 단순하게 생각해 보면 파라미터를 통해 넘겨주는 방법을 고려해 볼 수 있다.이를 위해선 Controller에서 요청이 시작되면 해당 요청의 id 값과 깊이를 Service와 Repository에 넘겨주면 된다.해결법파라미터를 통해 HTTP 요청 id값 전달하기위..