반응형 Spring57 [Spring] @ConstraintValidator, @RestControllerAdvice 유효처리 그리고 TDD.. 개발을 하다 보면 시작일 ~ 종료일처럼 기간 데이터를 검증하는 일이 자주 발생합니다.예를 들어, 시작일이 종료일보다 이후이면 안 된다는 조건을 서버에서 검증하고 싶을 때가 있습니다. 처음에는 단순하게 아래와 같은 방식으로 검증하곤 했습니다:if (start.isAfter(end)) { throw new InvalidDateFormatException();} 하지만 이 검증 로직은 여러 컨트롤러, 여러 서비스 클래스에 반복적으로 등장하고, 유지보수도 어렵습니다.그래서 이 로직을 공통화하려다 다음과 같은 리팩토링 방향으로 전환했습니다:✅ 리팩토링 방향: 커스텀 어노테이션으로 해결Spring에서는 @NotNull, @NotEmpty처럼 제약 조건을 어노테이션으로 선언할 수 있습니다.이와 유사하게, 시작일.. 2025. 6. 3. [Spring] 운영체제 수업 듣다 DFS 공부법 으로 GC에 오다(2) G1GC , Java 9 부터 디폴트 GC 이다. 용어내용EvacuationG1GC에서 일어나는 객체의 Copy 및 Moving을 뜻한다.RegionG1GC에서 관리하는 힙메모리 영역을 고정된 크기로 나눈 것Humongous Region새로 할당하는 인스턴스가 리전 하나의 메모리의 반절이 넘는경우 Humongous Region이라 칭하고 G1GC에서 별도로 관리하는 영역이 된다.Available/Unused Region아무것도 할당되어있지 않은 영역, Evacuating때 이주 대상이 된다.CollectionSet (CSet)GC가 수행될 Region 집합 (타겟)CSet 내 데이터는 GC 동안 모두 비워진다. (복사 혹은 이동됨)Region 집합은 Eden, Survivor, Old Generation.. 2025. 4. 25. [Spring] 운영체제 수업 듣다 DFS 공부법 으로 GC에 오다. 반효경 선생님의 운영체제에서 메모리 관리 쪽 듣다가 쭈욱 알아보다가 자바에 GC까지 오게 되었습니다. 그래서 정리해보려고요 레스고 1. 가비지 컬렉션(Garbage Collection)가비지 컬렉션(Garbage Collection, GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다. C같은 경우에는 개발자가 직접 관리를 해줘야 하지만 Java, Kotlin 은 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리를 해주기 때문에 개발자가 메모리를 직접 해제할 필요가없다. 알아서? 알아서가 뭘까=> 객체가 죽었다고 간주하는 조건이다. 쓸모 없다에 .. 2025. 4. 24. [Spring] RepoLayer에서 assertThat과 assertAll 활용법 안녕하세요!오늘은 JPA Repository 테스트를 작성할 때리스트 반환 결과를 검증하는 방법과여러 조건을 한 번에 검증하는 방법에 대해 소개하려고 합니다. 😎 ✅ 1. 리스트 크기 검증 — hasSize()Repository 메서드 실행 후 반환된 결과가 리스트라면,리스트의 크기를 검증할 때 아래와 같이 사용합니다.assertThat(result).hasSize(0);결과가 비어있는 경우 (크기 = 0)를 확인하는 코드입니다.주로 실패 케이스나 데이터가 없을 때 검증할 때 자주 씁니다. ✅ 2. 여러 조건 한 번에 검증 — assertAll()결과값의 크기, 포함된 값 등 여러 조건을 한 번에 검증하려면assertAll() 을 활용하면 깔끔합니다. assertAll( () -> asse.. 2025. 3. 25. [Spring] TDD Service 단에서 doAnswer doanswer 는일반적인 when-thenReturn 구조와 달리, 전달된 매개변수를 기반으로 동적 로딩을 처리하거나, 반환값을 계산 할때 사용합니다. when-thenreturn은 호출되는 메서드의 인수와 상관없이 항상 동일 값을 반환하기 때문에, 로직없이 간단한 테스트시에 유용합니다. 하지만 저는 주어진 기간에 맞으면서 raw 하게 데이터들을 가져오는 서비스를 개발하고 있었습니다. final LocalDate start = LocalDate.of(2024, 11, 11);final LocalDate end = LocalDate.of(2024, 11, 13);List executionIds = List.of(1L, 2L, 3L);doReturn(executionIds).when(executionR.. 2025. 1. 1. [Spring] TDD Controller 변수가 RequestParam 이 많을때 컨트롤러를 테스트하면서 URL에 날짜 2개 와, 캠페인ID가 필요했습니다. 그러면 실패코드가 뭐 날짜가 누락된경우, 캠페인아이디가 누락된경우, 아무것도 없는경우 등등 모든경우를 다 하면 너무 많이 나옵니다. 이럴때 사용하는 것이 @ParameterizedTest@MethodSource 를 사용해주면 됩니다. 테스트 메서드에 다양한 입력값을 전달하며 여러번 실행 할 수 있게하며, 데이터는 외부 메서드 에서 생성되며 Stream API형식으로 반환됩니다.@ParameterizedTest@DisplayName("getCampaignDetails() : 파라미터 값 누락")@WithAuthUser@MethodSource("invalidGetCampaignDetailsUrl")void test(String url.. 2024. 12. 31. 이전 1 2 3 4 ··· 10 다음 반응형