분류 전체보기

테스트 코드를 작성하다 보면 “어제는 성공했는데 오늘은 실패한다?” 수정한 게 하나도 없는데 이런 일이 벌어질 때가 있습니다. 이번 글에서는 제가 실제로 겪은 LocalDateTime.now() 때문에 테스트가 간헐적으로 실패한 경험과 이를 해결한 방법을 정리해 보았습니다.이슈 발생제가 회사에서 맡고있는 소개팅 앱의 기능에는 이성의 카드를 받고 좋아요 또는 호감 메시지 보내기 기능이 있습니다. 이런 기능을 액션을 했다고 표현하는데 액션을 하게 되면 카드의 D-DAY를 갱신해주게 됩니다. D-DAY 갱신 방식으로는 기존 D-DAY가 7인 카드는 액션 시 D-7로 갱신하고, D-DAY가 1~6인 카드는 D-6으로 갱신해줍니다. 갱신 시에는 카드 데이터의 생성시간을 직접 수정D-DAY는 별도의 컬럼으로 관리..
· Study/Test
개요스프링 테스트에서 Mock 객체를 써야 할 때는 보통 @MockBean을 많이 사용한다.그러나 @MockBean은 아예 원래 빈을 가짜 객체로 교체하기 때문에, 원래 구현 로직은 전혀 실행되지 않는다. 그에 비해 @SpyBean은 실제 빈을 감싸서(Spy) 일부만 Mocking 하게 도와주는 어노테이션이다.(즉, 원래 로직은 그대로 두되 필요한 메서드만 스텁(stub) 처리할 수 있는 방식이다.)@MockBean → 원래 빈을 전부 Mock으로 교체@SpyBean → 원래 빈을 유지하면서 원하는 메서드만 Mock 처리 그래서 서비스 로직은 그대로 실행하면서, DB 접근이나 외부 API 호출 같은 특정 부분만 가짜 값으로 대체하고 싶을 때 @SpyBean을 사용한다. 이 @SpyBean을 사용할 때는..
Spring 웹 애플리케이션을 개발할 때 특정 객체를 Spring 컨테이너가 관리하는 Bean으로 등록하고 싶은 경우에는 @Bean 어노테이션 또는 @Component 어노테이션을 사용합니다. @Bean과 @Component 둘 다 Component Scan을 통해 Spring Bean으로 등록되고 Life Cycle이 관리되지만, 사용 방법과 용도에 따라 차이가 있습니다. 이번 포스팅에서는 이 두가지 방식이 어떤 차이를 가지는 지 알아보고자 합니다. @Bean 먼저 @Bean 어노테이션은 메서드 레벨에 선언하는 어노테이션으로, 생성자 메서드를 통해 Spring Bean을 등록합니다. 해당 어노테이션은 독립적으로 사용할 수 없고, 클래스 레벨에 @Component를 포함하고 있는 어노테이션을 함께 선언해..
이진 탐색 트리 (Binary Search Tree) 의 개념 이진 탐색 트리란 ? Binary Search Tree (이하, BST)는 모든 노드의 왼쪽 서브 트리가 해당 노드 보다 작은 값을 가지고, 오른쪽 서브 트리가 해당 노드 보다 큰 값을 가지는 구조의 Binary Tree 입니다. 위의 그림에서는 노드 20의 왼쪽 서브 트리는 모두 20보다 작은 값을 가지고, 오른쪽 서브 트리의 모든 값은 20보다 큰 값을 가지고 있습니다. 그런데 만약 자식 노드 중 이러한 조건을 하나라도 만족하지 않는 노드가 존재한다면 BST가 아니게 됩니다. 예를 들어 5의 자식 노드 중 오른쪽 자식 노드가 1의 값을 가진다면, 해당 트리는 더이상 BST가 아닙니다. 이러한 특징을 가지는 BST는 항상 작은 값은 왼쪽, ..
이진 트리란 ? 이진 트리는 트리 형태의 자료 구조 중 가장 많이 사용하는 트리로, 각 노드의 자녀 노드 수가 최대 두개인 트리를 이진 트리(Binary Tree)라고 합니다. 형태에 따른 이진 트리 종류 1. Full Binary Tree (정 이진 트리) Full Binary Tree란 모든 노드가 자녀 노드가 없거나 또는 두 개의 자녀 노드를 가지는 이진 트리입니다. (즉, 자녀 노드를 1개를 가지는 노드가 없어야 합니다) 2. complete binary tree (완전 이진 트리) complete binary tree는 마지막 레벨을 제외한 모든 레벨의 노드가 두 개씩 노드를 가지고, 마지막 레벨은 왼쪽 부터 빠짐없이 노드가 채워지는 이진 트리입니다. 3. perfect binary tree (..
Tree의 개념 트리(Tree) 란 노드(Node)들의 집합으로, 노드는 값(value)과 다른 노드들을 가리키는 레퍼런스(Reference)들로 구성되어 있습니다. Tree의 주요 용어 간선 간선 (Edge)란 노드와 노드를 연결하는 선을 의미하고, 구현 관점에서는 노드 간의 주소 값 레퍼런스(참조)를 의미합니다. 역할 별 노드 트리의 노드는 역할에 따라 자녀 노드 , 부모 노드, 형제 노드, 조상 노드, 자손 노드, 내부 노드, 외부 노드 가 있습니다. 각 노드들이 무엇이고 어떤 역할을 하는지 그림을 통해 알아보겠습니다. 1. 루트 노드 (Root Node) 모든 노드의 최상위 노드 위 그림에서 P에 해당합니다. 2. 자녀 노드 (Child Node) 특정 노드의 바로 아래에 연결된 노드 부모 노드..
iwannarest
'분류 전체보기' 카테고리의 글 목록