본문 바로가기
반응형

Java26

[Java] Enum 사용법 (3) - 실무 활용 Enum 총 정리 Enum 탄생 배경 Enum 사용법 Enum 활용법 수없이 들어온 Enum 탄생 배경과 사용법 그렇다면 도대체 실무에서 Enum을 어떻게 활용해야 할까? Enum을 사용하는 글들이나 실무 코드들에 적용했던 방법을 보면 (1) String이나 int로 하드코딩했던 것들을 Enum으로 리팩토링해서 타입 세이프 하게 사용 (2) 장기간 변경되지 않는 국가코드, 전화번호 앞자리 등 어떤 코드들을 DB에서 저장해서 사용했던 것들을 Enum으로 변경해서 DB 쿼리를 최소화해 부하를 줄이는 방법 사용 (3) 개발된 로직 중에 개념이 애매모호한 것들을 하나로 묶는 리팩토링 작업에 사용 이렇게 3가지에 주를 이룬다. 실제 업무 적용 사례 회원가입할 때 지역번호 Select 박스에 나오는 값들을 매번 D.. 2022. 9. 6.
[Java] Enum 사용법 (2) - 문법 Enum 총 정리 Enum 탄생 배경 Enum 사용법 Enum 활용법 Enum 선언 enum 열거형이름 { 상수명1, 상수명2, …) Enum 메서드 메서드 설명 Class getDeclaringClass() 열거형의 Class 객체를 리턴한다. String name() 열거형 상수의 이름을 문자열로 리턴 int ordinal() (웬만하면 사용 X) 열거형 상수가 정의된 순서를 리턴 (0부터 시작) T valueOf(Class enumType, String name) T valueOf(String name) [지정된 열거형에서] name 과 일치하는 열거형 상수를 리턴 T[] values() 열거형 상수들을 배열 형태로 리턴 예제) public class enumTest { public enum Sea.. 2022. 9. 6.
[Java] Enum 사용법 (1) - 탄생 배경 Enum 총 정리 Enum 탄생 배경 Enum 사용법 Enum 활용법 Enum이란? JDK 1.5부터 추가된 Enum은 열거형이라고 하며 서로 관련된 상수를 편리하게 선언하고 관리하기 위해 만들어 졌다. 그렇다면 JDK 1.5 이전엔 어떻게 썼고 왜 Enum이 나오게 됐을까? Enum의 등장 배경 Enum이 등장하기 전까진 정수 열거 패턴을 사용했다. 하지만 정수 열거 패턴엔 큰 문제점이 있었다. private final int SPRING = 1; private final int SUMMER = 2; private final int AUTUMN = 3; private final int WINTER = 4; 문제점 1. 가독성이 떨어져 관리가 용이하지 않았다. 2. 정수 열거 패턴을 위한 네임스페이스 공.. 2022. 9. 6.
[Java] 아키텍처 테스트 - ArchUnit (+ JUnit 5) 이번 포스팅에선 아키텍처 테스트 라이브러리인 ArchUnit에 대해 알아보겠습니다. 아키텍처 테스트란? 아키텍처 테스트는 프로젝트가 정해놓은 아키텍처를 제대로 따르고 있는지 확인하는 것을 말합니다. ArchUnit이란? ArchUnit는 다양한 아키텍처 체크를 할 수 있는 메소드를 제공합니다. 1) 패키지 의존성 체크 2) 클래스 의존성 체크 3) 패키지 네이밍 룰 체크 4) 구현체 네이밍 룰 체크 5) 구현체 어노테이션 체크 6) 레이어 체크 7) 순환구조 체크 추가적인 내용은 공식 홈페이지 가이드를 참고하시길 바랍니다. ArchUnit User Guide ArchUnit is a free, simple and extensible library for checking the architecture of.. 2022. 9. 6.
[Java] JUnit 5 사용법 (12) - AssertJ ( + vs Hamcrest, 마이그레이션) 이번 포스팅에선 AssertJ에 대해서 알아보고 Hamcrest와 비교해보고 JUnit 5, Hamcrest 에서 AssertJ로 마이그레이션 하는 방법에 대해 알아보겠습니다.) AssertJ 간단하게 AssertJ에 대해서 알아보겠습니다. AssertJ도 spring-boot-starter-test에 포함되어 있습니다. 혹시 spring-boot-starter-test를 사용하지 않는다면 의존성 추가를 해주세요. //Maven org.assertj assertj-core 3.11.1 test //Gradle testCompile("org.assertj:assertj-core:3.11.1") testCompile("org.assertj:assertj-core:2.9.1") //version 2.9.1 f.. 2022. 9. 6.
[Java] JUnit 5 사용법 (11) - Hamcrest 이번 포스팅에선 이전 포스팅에 설명했던 assertions, assumptions 를 좀 더 가독성있고 편하게 쓸 수 있도록 도와주는 라이브러리 hamcrest를 소개합니다. Hamcrest JUnit 4 라이브러리에 포함되어 있었는데 JUnit 5로 오면서 빠지게된 라이브러리입니다. spring-boot-starter-test 라이브러리에 포함되어 있습니다. 혹시 spring-boot-starter-test를 사용하지 않을 경우 의존성 추가해 주세요. //maven org.hamcrest hamcrest-all 1.3 test //gradle testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3' Hamcrest에서 비교하기 위해.. 2022. 9. 6.
[Java] JUnit 5 사용법 (10) - Assertions, Assumptions 이번 포스팅에선 JUnit 을 사용하면서 간단하지만 제일 중요한 기능인 Assertions, Assumptions에 대해 알아보겠습니다. JUnit 5에서 기본적으로 제공해주는 Assertions, Assumptions를 알아보고 다른 라이브러리는 어떤 것들이 있는지 알아보겠습니다. JUnit 5 Assertions Assertion이 한글 뜻으로 주장이라는 뜻인데 테스트가 원하는 결과를 제대로 리턴하는지 에러는 발생하지 않는지 확인할 때 사용하는 메소드를 말합니다. 각 메소드의 인자는 별도로 표기하지 않겠습니다. 워낙 많은 인자들이 있어서 표기하지 않았습니다. 메소드명 설명 fail 무조건 실패 (레거시에 사용하면 좋다.) assertTrue 조건이 성공이면 True assertFalse 조건이 실패면.. 2022. 9. 6.
[Java] JUnit 5 사용법 (8) - OS, JAVA, JVM, 시스템 환경변수 별 테스트 (@EnabledOnOs, @DisabledOnOs, @EnabledOnJre, @DisabledOnJre, @EnabledOnJreRange, @EnabledIfSystemProperty, @DisabledIfSystemProperty, @EnabledIfEnvironmentVariable, @Dis.. 이번 포스팅에선 JUnit 5에서 OS 종류, JAVA 버전, 시스템 환경변수 별 테스트하는 방법에 대해 알아보겠습니다. @EnabledOnOs, @DisabledOnOs OS 환경 별 테스트 할 수 있게 해주는 어노테이션 파라미터명 타입 설명 value OS[] 테스트 OS LINUX MAC SOLARIS WINDOWS OTHER disabledReason String disabled 이유 @Disabled 사용했을 경우 사용 예제 @EnabledOnOs(OS.WINDOWS)를 자주 사용한다면 @Test와 @EnabledOnOs(OS.WINDOWS)를 합쳐 @TestOnWindows로 사용할 수 있습니다. package com.effortguy.junit5; import org.junit.jupiter.. 2022. 9. 6.
[Java] JUnit 5 사용법 (9) - JUnit 4에서 JUnit 5로 마이그레이션 하는 방법 (JUnit 4 vs JUnit 5) 이번 포스팅에선 JUnit 4에서 JUnit 5으로 마이그레이션 하는 방법에 대해서 알아보겠습니다. JUnit 4 vs JUnit 5 JUnit 4이 JUnit 5로 버전업되면서 바뀐 점을 먼저 알아보겠습니다. JUnit 4 JUnit 5 org.junit org.junit.jupiter.api @Before / @After @BeforeEach / @AfterEach @BeforeClass / @AfterClass @BeforeAll / @AfterAll @Ignore @Disabled @Category @Tag @Runwith @ExtendWith @Rule / @ClassRule @ExtendWith / @RegisterExtension 마이그레이션 순서 1. JUnit 4 -> 5 버전 변경 JU.. 2022. 9. 6.
반응형