테스트

1. 문제 상황 최근 프로젝트에서 Role 이라는 Enum 클래스를 만들면서 of 메서드를 추가하게 되었다. 이 메서드는 문자열 입력값을 받아 Enum 값을 반환하는 역할을 한다. package com.griotold.auth.domain.enums;import lombok.AllArgsConstructor;import lombok.Getter;@Getter@AllArgsConstructorpublic enum Role { MASTER("ROLE_MASTER"), HUB("ROLE_HUB"), DELIVERY("ROLE_DELIVERY"), COMPANY("ROLE_COMPANY"); private final String role; public static Role of(..
이 글은 Practical Testing: 실용적인 테스트 가이드 를 참조하였습니다. 1. @DisplayName 이란?Junit5 부터 사용할 수 있는 기능으로, 테스트 메소드나 테스트 클래스에 사람이 읽기 쉬운 이름을 지정하는 어노테이션이다. 이 어노테이션을 사용하면 테스트 실행 시, 메소드 이름 대신 지정한 설명을 출력하여 테스트의 목적이나 의미를 명확히 알 수 있다. 특히 테스트의 가독성을 높이고, 무엇을 테스트하고 있는지 쉽게 파악할 수 있도록 도와준다. 2. @DisplayName 사용법import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;class MyTests { @Test @DisplayName("..
테스트 코드를 짜다 보면, 많은 수의 example data 를 생성해야 한다. 이번 포스트에서는 내가 테스트 코드를 학습하면서 접한 4가지 방법에 대해서 소개하려고 한다.본격적으로 들어가기에 앞서 테스트하려는 대상부터 설명하겠다.Comment 엔티티package com.bizplus.boardsaturday.domain.entity;import com.bizplus.boardsaturday.domain.common.BaseTimeEntity;import com.bizplus.boardsaturday.domain.type.ActiveStatus;import com.bizplus.boardsaturday.domain.type.DeleteStatus;import lombok.AccessLevel;import..
0. 들어가며...코딩을 할 때면 언제나 테스트 코드를 함께 작성하는 편이다.테스트 코드의 중요성을 모를 개발자는 아마 없을 거라고 생각한다.마틴 파울러의 을 최근에 읽었는데, 거기에서도 테스트 코드의 중요성을 많이 강조하더라.테스트 코드 없이 리팩토링을 한다는 건, 마치 줄 없이 곡예를 하는 것 같다고까지 이야기하니까."잘 돌아가던 코드가 리팩토링 후에 왜 안 되지?"라고 한탄하는 순간,사실 그건 리팩토링이 아니라 코드의 무덤을 파는 일일지도 모른다. 그런데 가만히 생각해보니, "내가 지금껏 테스트 코드를 올바르게 활용하고 있었나?" 싶다.서비스 레이어는 거의 테스트하지 않고 있었고, 'stub', 'Mock', 'test double' 같은 용어들은 학습했지만,솔직히 말해 마음에 와닿지 않았다."이런..