JVM68 [JUnit] 소개 - 2. Assertion 과 Assumption Assertion 실제 테스트에서 검증하고자 하는 내용을 확인하는 기능 org.junit.jupiter.api.Assertions.* Method 메소드명 설명 fail 무조건 실패 assertTrue 조건이 True 이면 성공 assertFalse 조건이 False 이면 성공 assertNull 조건이 Null 이면 성공 assertNotNull 조건이 Not Null 이면 성공 assertEquals 기대값(expected) 와 실제값(actual)이 동일하면 성공 assertArrayEquals 두 Array가 동일하면 성공 assertIterableEquals 두 Iterable이 동일하면 성공 assertLinesMatch 두 Stream이 동일하면 성공 assertNotEquals 기대값(ex.. JVM/JUnit 2022. 11. 1. [JUnit] 소개 - 1. 테스트 종류와 JUnit 이란 테스트의 종류 단위 테스트 (Unit Test) - TDD 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상 동작을 검증하는 테스트 테스트 대상 단위 클래스 메소드 테스트 단위의 크기 작을수록 복잡성이 낮아지고, 테스트 활용이 더 쉬워진다. 통합 테스트 (Integration Test) 단위 테스트보다 더 큰 동작을 위해 여러 모듈을 모아 의도대로 협력하는 지 검증하는 테스트 외부 라이브러리(API, DB 등..)까지 묶어 검증할 때 사용한다. 단위 테스트보다 더 많은 코드를 테스트하기 때문에 신뢰성이 떨어진다. 또한, 에러 발생 시 확인이 쉽지 않아 유지보수가 힘들다. 인수 테스트 (Acceptance Test) 사용자 시나리오에 맞춰 수행하는 테스트 단위/통합 테스트와 달리 비즈니스에 초점을 둔다 .. JVM/JUnit 2022. 11. 1. [Lombok] 자주 사용되는 Lombok Annotation 기능정리 먼저 자바 라이브러리 Lombok 다운로드 및 적용방법은 다음 게시글을 참고하자. Java 필수 라이브러리 Lombok 사용, 적용방법 Java 필수 라이브러리 Lombok 사용, 적용방법 Lombok 라이브러리는 VO(Value Object) 나 DTO(Data Transfer Object) 생성 시 혁신적으로 코드를 줄여주는 라이브러리 입니다. 얼마나 혁신적으로 코드를 줄이는지.. aljjabaegi.tistory.com @Getter, @Setter 필드에 @Getter/@Setter 을 붙이면, 해당 필드에 대한 기본 getter/setter 메소드를 생성해준다. 접근 제한자 AccessLevel @Getter/@Setter 에서의 접근 제한자 설정을 할 수 있다. 만약 생성되는 getter/se.. JVM/Java 2022. 9. 4. [Java] 객체 매핑 라이브러리 ModelMapper 살펴보자 ModelMapper ? 서로 다른 클래스의 값을 한 번에 복사하게 도와주는 라이브러리로, 어떤 Object (Source Object) 에 있는 필드 값들을 자동으로 원하는 Object (Destination Object) 에 매핑 시켜주는 라이브러리다. ModelMapper 공식 문서 주로 DTO와 같은 클래스로 데이터를 받은 후 원하는 클래스(Entity)에 넣어줄 때, Getter/Setter를 이용해 필드를 복사/붙여넣기하는 작업을 거친다. 이 때, 매핑해야할 필드가 다른 경우도 빈번하다. 즉, 다른 모델의 Object를 매핑해줘야하는 작업이 발생할 수 있다. 이런 단점들을 해결하기 위한 라이브러리이다. 세팅 의존성 추가 build.gradle implementation 'org.modelmap.. JVM/Java 2022. 8. 17. [Java] Java Stream 활용하여 두 개의 List 객체 비교하기 Stream. -Match 메소드 예제 allMatch() : 모든 요소들이 매개 값(Predicate)로 주어진 조건을 만족하는지 조사 anyMatch() : 최소한 한 개의 요소가 주어진 조건에 만족하는 지 조사 noneMatch() : 모든 요소들이 주어진 조건을 만족하지 않는지 조사 class Test { public static void main(String[] args) { int[] intArray = {2, 4, 6}; boolean allResult = Arrays.stream(intArray).allMatch(a -> a % 2 == 0); boolean anyResult = Arrays.stream(intArray).anyMatch(a -> a % 2 == 0); boolean non.. JVM/Java 2022. 8. 16. [JPA] 기본 키 전략과 Entity Custom ID Generator 구현하기 JPA 기본키 생성 전략 관계형 데이터베이스에서 테이블은 각각의 행을 구별하는 기본키가 필요하다 기본키를 만들 때는 주민등록번호, 주문번호 같은 자연키 를 사용할 수도 있고, 논리적 의미가 하나도 없는 시퀀스와 같은 대체키를 사용할 수도 있다. @GeneratedValue JPA Entity 에서 @GeneratedValue 어노테이션을 기본키 필드 위에 붙이면 기본키를 자동으로 생성해주는 전략을 사용할 수 있다. 전략은 크게 4가지 이다. IDENTITY 기본키 생성을 hibernate가 아닌, 데이터베이스가 하도록 위임한다. @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long .. JVM/JPA 2022. 8. 5. [JPA] SpringBoot JPA 쿼리 로그 설정하기 SpringBoot JPA를 사용할 때, SQL 쿼리문을 표출하는 설정 관련해서 정리해보자. 요약 application.yml spring: jpa: properties: hibernate: show_sql: true format_sql: true use_sql_comments: true logging: level: org: hibernate: type: descriptor: sql: trace application.properties spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.use_sql_comments=true logg.. JVM/JPA 2022. 7. 27. [JPA] JpaRepository를 상속 받은 인터페이스는 @Repository 없이 어떻게 인스턴스화될까? 개요 Spring Data JPA 를 사용한다면, 보통 Repository 인터페이스는 다음과 같을 것이다 import org.springframework.data.jpa.repository.JpaRepository; public interface MemberRepository extends JpaRepository { // ... } 위의 코드만 봤을 때는, MemberRepository가 @Repository 어노테이션 없이 어떻게 Bean을 등록되는 지 알 수 없다. JpARepository 내부 구현 코드를 들어가봐도 Bean 으로 등록해주는 코드는 존재하지 않았다. 이 궁금증을 시작으로 찾아보게 되었다. @EnableJpaRepositories 이 어노테이션은 JPA Repository 들을 활.. JVM/JPA 2022. 7. 26. [Java] 중복 키 허용 MultiValueMap 와 HashMap 차이 MultiValueMap 살펴보기 전에 Map에 대해 간단히 살펴보자. Map 의 종류 HashMap TreeMap LinkedHashMap HashMap Map의 기본 형식으로, key : value 를 한 쌍으로 데이터를 저장하며 중복된 키가 존재하지 않는다. Map에 있는 데이터는 키 값을 기준으로 가져온다. TreeMap HashMap 기능 + 자동 정렬 TreeMap은 데이터가 들어올 때마다 key 값에 따라 자동 정렬된다. LinkedHashMap HashMap 기능 + 입력 순서 보장 HashMap에 데이터를 C - B - A 순서로 했다면, 나중에 맵에 있는 모든 값을 출력할 때 C - B - A 순으로 출력된다는 보장이 없다. 하지만, LinkedHashMap은 이 문제를 해결해준다. M.. JVM/Java 2022. 6. 24. [Java] Comparator, Lamda 사용하여 2차원 배열 정렬하기 오름차순, 내림차순 등 정렬을 할 때 음수가 나와야 오름차순인지, 양수가 나와야 오름차순인지 항상 헷갈려서 기억하기 위해 잘 정리된 포스팅을 참고하여 남겼다. 2차원 배열을 바로 Arrray.sort()를 통해 정렬하려고 하면, 비교 기준이 구현되어 있지 않기 때문에 캐스팅에 실패했다는 java.lang.ClassCastException: I cannot be cast to java.lang.Comparable 오류가 발생한다. 그 해결책으로 Comparable,Comparator 인터페이스를 구현하여 정렬기준을 추가해 2차원배열 뿐만 아니라 객체비교할 때도 사용할 수 있다. int[][] arr = new int[][]{{5,10},{3,30},{1,50},{4,20},{2,40},{5,60}}; Ar.. JVM/Java 2022. 6. 8. [Java] Arrays.sort 와 Collections.sort 정리 자료구조 알고리즘을 공부할 때 꼭 알아둬야할 기능인데.. 할 때마다 헷갈리고 까먹어서 정리좀 해둬야겠다.. Arrays.sort 오름차순 기본 오름차순 정렬 : 숫자 - 대문자 - 소문자 - 한글 순서로 정렬 import java.util.Arrays; public class Sort { public static void main(String[] args) { String[] str = {"a", "1", "가", "A", "3", "나"}; for(String s : str) {// 정렬 전 출력 System.out.print(s + " "); } System.out.println(); Arrays.sort(str);// 정렬 후 출력 for(String s : str) { System.out.prin.. JVM/Java 2022. 6. 6. [Java] StringTokenizer Class 사용 및 Split 비교 StringTokenizer Class ? 문자열을 스페이스, 특정 구분자 등의 기준으로 분리할 때 사용 StringTokenizer 구문 StringTokenizer st = new StringTokenizer("문자열");// 띄어쓰기 기준으로 문자열 분리 StringTokenizer st = new StringTokenizer("문자열", "구분자");// 구분자 기준으로 문자열 분리 StringTokenizer st = new StringTokenizer("문자열", "구분자", boolean); // 구분자 기준으로 문자열 분리할 때 구분자도 Token으로 넣을지(true), 말지(false default) StringTokenizer 라이브러리 Import import java.util.Str.. JVM/Java 2022. 5. 28. 이전 1 2 3 4 5 6 다음 추천 글 728x90 반응형