본문 바로가기

전체 게시글376

[Java] Matcher 클래스를 사용한 커스텀 구분자 지정 기존의 요구사항 기존에는 콤마(,)와 콜론(:)을 구분자로 사용했다고 가정하자. 그렇다면, 아래와 같은 메서드를 구현할 수 있다. private static String[] split(String text) { return text.split(",|:"); } 요구사항 변경 하지만, 요구사항이 사용자가 아래와 같이 "//"와 "\n" 문자 사이에 커스텀 구분자를 지정할 수 있다고 변경되었다고 한다면? 그렇다면 split() 메서드를 수정해야한다. //;\n1;2;3 아래와 같이 수정할 수 있다. private static String[] split(String text) { Matcher m = Pattern.compile("//(.)\n(.*)").matcher(text); if( m.find() ) .. 2023. 4. 18.
[JUnit] AssertJ 라이브러리의 문자열 테스트와 숫자 테스트의 메서드 라이브러리 의존성 설정 Java8 이상 기반 프로젝트는 3.x 버전을, Java7 이하 기반 프로젝트는 2.x 버전을 사용해야 한다. Gradle testCompile 'org.assertj:assertj-core:3.6.2' Maven org.assertj assertj-core 3.6.2 test 테스트 대상 지정 모든 테스트 코드는 assertThat() 메서드에서 출발하며, 다양한 메서드를 연쇄 호출해서 코드를 작성함. assertThat(테스트 타켓).메소드1().메소드2().메소드3(); 문자열 테스트 assertThat("Hello, world! Nice to meet you.") // 주어진 "Hello, world! Nice to meet you."라는 문자열은 .isNotEmpty() .. 2023. 4. 14.
[JUnit] 스트림(Stream)을 이용한 JUnit기반 테스트 코드 작성 도메인 모델 사람의 속성인 이름과 나이를 멤버 변수로 가지는도메인 모델이다. public class Person { private String name; private int age; public Person( String name, int age ) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 요구사항 충족하는 테스트 코드를 작성 사람들 중에 성인(나이가 26.. 2023. 4. 14.
[Convention] Commit Message Conventions 커밋 메시지와 관련된 요약된 원칙 제목과 본문은 빈줄로 구분 제목은 명령어 형태로 작성, 50자 이내로 제한 제목에는 아래와 같은 접두사를 사용 feat 기능 추가 fix 버그 수정 docs 문서 업데이트 style 코드 스타일 변경 refactor 코드 리팩토링 test 테스트 코드 추가 또는 수정 chore 빌드, 배포 등의 작업 본문은 변경 사항에 대한 자세한 설명 작성 본문은 72자마다 줄바꿈, 한줄에는 80자 제한 본문에는 변경 사항의 원인, 영향, 해결 방법 기술 본문에는 "Closes #이슈번호" 형식으로 관련 이슈를 참조 제목 접두사 별 예시 여러 줄로 커밋 메시지를 작성하려고 하면, 줄바꿈이나 특수 문자('^' 등)가 올바르게 처리되지 않을 수 있음. 따라서 텍스트 편집기(메모장 등)에 .. 2023. 4. 13.
[JUnit] assertj 활용한 테스트 코드 작성 해당 글은 NEXTSTEP 자바 플레이그라운드 with TDD, 클린 코드를 통해서 새롭게 배우고 내용을 기록한 글입니다. contains(String values) 배열로 반환하는 값의 경우 assertj의 contains()를 활용해 반환 값이 맞는지 검증 @Test void split1() { String actual = "1,2"; String[] actualSplit = actual.split(","); assertThat(actualSplit).contains("1"); assertThat(actualSplit).contains("2"); } containsExactly(String values) 배열로 반환하는 값의 경우 assertj의 containsExactly()를 활용해 반환 값이 맞.. 2023. 4. 12.
[Spring] AOP(Aspect Oriented Programming)에 대해서 AOP란? AOP를 이해하는데 가장 중요한 핵심 개념이 바로 관심 분리이다. AOP에서는 메서드마다 공통으로 등장하는 로깅이나 예외, 트랜잭션 처리 같안 코드들을 횡단 관심이라고 한다. 이에 반해 사용자의 요청에 따라 실제로 수행되는 핵심 비즈니스 로직을 핵심 관심이라고 한다. 만약 이 두 관심을 완벽하게 분리할 수 있다면, 개발자가 구현하는 메서드에는 실제 비즈니스 로직만으로 구성할 수 있으므로, 더욱 간결하고 응집도 높은 코드를 유지할 수 있다. AOP 용어 간략 정리 조인포인트(Joinpoint) 클라이언트가 호출하는 모든 비즈니스 로직을 말함. 포인트컷으로 설정될 수 있는 메서드라고 이해하면 쉽다.( 포인트컷 대상 혹은 포인트컷 후보) 포인트컷(Pointcut) 필터링된 조인포인트를 의미한다. 포.. 2023. 4. 11.