전체 글
-
아이템31. 한정적 와일드카드를 사용해 API 유연성을 높이라Java/이펙티브 자바 2023. 10. 31. 16:32
핵심정리 - Chooser와 Union API 개선 PECS : Producer-Extends, Consumer-Super - Producer-Extends ㆍObject의 컬렉션 Number나 Integer를 넣을 수 있다. ㆍNumber의 컬렉션에 Integer를 넣을 수 있다. - Consumer-Super ㆍInteger의 컬렉션의 객체를 꺼내서 Number의 컬렉션에 담을 수 있다. ㆍNumber나 Integer의 컬렉션의 객체를 꺼내서 Object의 컬렉션에 담을 수 있다. - 예시) // 코드 31-2 E 생산자(producer) 매개변수에 와일드카드 타입 적용 (182쪽) public void pushAll(Iterable list, int i, int j) { list.set(i, lis..
-
켄트백의 테스트주도개발Test/테스트주도개발 (켄트백) 2023. 10. 29. 17:00
후기 - 이 책을 읽기 전에 '테스트 주도 개발 시작하기' 라는 책을 먼저 읽었다. 만약에 이 책을 먼저 읽을려고 한다면 나는 테스트 주도 개발 시작하기라는 책을 더 추천한다. - 테스트 코드를 어느 정도 알고 나서 읽으면 좋겠다는 생각이 들었다. - 글귀에서 여러 좋은 조언을 얻었다. 테스트 코드 적으로는 다른 강의나 책들을 읽어서 그런지 확 와닫는게 없었다. 그래서 글귀 몇 개를 남긴다. 개발자로서 어려운 상황에 어떻게 맞설 것인가? - 불확실한 상태로 있는 대신, 가능하면 재빨리 구체적인 학습을 하기 시작한다. - 침묵을 지키는 대신, 좀더 분명하게 커뮤니케이션한다. - 피드백을 회피하는 대신, 도움이 되고 구체적인 피드백을 찾는다. - (자신의 나쁜 성깔은 직접 해결해야 한다.) - 테스트 주도 ..
-
Testing Spring Boot AppTest/Testing Spring Boot App 2023. 10. 27. 17:10
Repository Layer @DataJpaTest - 저장소 계층만 테스트하기 위해 사용 - 내장된 메모리에 자동으로 구성 - Spring Data JPA 리포지토리 및 JPA 관련 테스트할 수 있다. Service Layer @ExtendWith(MockitoExtension.class) - JUnit 5와 Mockito를 통합하여 테스트를 작성하고 실행할 수 있도록 도와준다. @Mock - 테스트 대상 클래스에서 다른 클래스 또는 의존성 객체를 대신하는 모의 객체를 생성한다. - 즉, 테스트 대상 클래스 내에서 특정 메서드를 호출하거나 특정 객체를 사용할 때, 이를 실제 객체 대신 모의 객체가 대신 동작한다. @InjectMocks - 테스트 대상 클래스에 @Mock 으로 생성된 모의 객체를 주입..
-
ERD 정리TIL ( Today I Learned ) 2023. 10. 15. 18:41
관계선의 종류 실선(Identifying) : 식별관계 - 부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우 - 부모가 있어야 자식이 생기는 경우 - 부모 자식 관계에서 자식이 부모의 키를 외래키로 참조 점선(Non-Identifying) : 비식별관계 - 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우 - 부모가 없어도 자식이 생기는 경우 - 부모 자식 관계에서 자식이 부모의 키를 일반 속성으로 참조 항목 식별자 관계 비식별자 관계 목적 강한 연결관계 표현 약한 연결관계 표현 자식 주식별자 영향 자식 주식별자의 구성에 포함됨 자식 일반 속성에 포함됨 표기법 실선 표현 점선 표현 연결 고려사항 - 반드시 부모엔티티 종속 - 자식 주식별자 구성에 부모 주식별자 포함 필요 - 상속받은 주식별자 속..
-
테스트 주도 개발 시작하기 - chapter5 ~ chapter7Test/테스트주도개발 시작하기 (최범균) 2023. 9. 30. 21:11
5. JUnit5 기초 5-1. JUnit 모듈 구성 - JUnit5의 구성 요소 ㆍJUnit 플랫폼 : 테스팅 프레임워크를 구동하기 위한 런처와 테스트 엔진을 위한 API 제공 ㆍJUnit 주피터(Jupiter) : JUnit5를 위한 테스트 API와 실행 엔진을 제공한다. ㆍJUnit 빈티지(Vintage) : JUnit3과 4로 작성된 테스트를 JUnit5 플랫폼에서 실행하기 위한 모듈을 제공한다. 5-2. @Test 애노테이션과 테스트 메서드 - JUnit 코드의 기본 구조는 간단하다. 테스트로 사용할 클래스를 만들고 @Test 애노테이션을 메서드에 붙이기만 하면 된다. - JUnit의 Assertions 클래스는 검증하기 위한 목적의 다양한 정적 메서드를 제공한다. 5-3. 주요 단언 메서드 -..
-
테스트 주도 개발 시작하기 - chapter2 ~ chapter4Test/테스트주도개발 시작하기 (최범균) 2023. 9. 30. 14:26
2. TDD 시작 2-1. TDD 란? - 구현을 먼저하고 나중에 테스트하는 것이 아니라, 먼저 테스트를 하고 그다음에 구현한다. - 즉, TDD로 개발할 때 먼저 해야 할 것은 기능을 검증하는 테스트 코드를 작성하는 것이다. * src/test/java 소스 폴더는 배포 대상이 아니므로 src/test/java 폴더에 코드를 만들면 완성되지 않은 코드가 배포되는 것을 방지하는 효과가 있다. 2-2. TDD 예: 암호 검사기 2-3. TDD 흐름 1. 테스트가 개발을 주도 2. 지속적인 코드 정리 3. 빠른 피드백 3. 테스트 코드 작성 순서 3-1. 테스트 코드 작성 순서 - 구현하기 쉬운 테스트부터 시작하기 - 예외 상황을 먼저 테스트해야 하는 이유 ㆍ예외 상황을 전혀 고려하지 않은 코드에 예외 상황..
-
아이템29 & 아이템30Java/이펙티브 자바 2023. 9. 28. 16:05
아이템29. 핵심 정리 - 이왕이면 제네릭 타입으로 만들라 - 배열을 사용하는 코드를 제네릭으로 만들 때 해결책 두 가지 - 첫번째 방법 : 제네릭 배열(E[]) 대신에 Object 배열을 생성한 뒤에 제네릭 배열로 형변환한다. ㆍ형변환을 배열 생성시 한 번만 한다. ㆍ가독성이 좋다. ㆍ힙 오염이 발생할 수 있다. - 두번째 방법 : 제네릭 배열 대신에 Object 배열을 사용하고, 배열이 반환한 원소를 E로 형변환한다. ㆍ원소를 읽을 때마다 형변환을 해줘야 한다. 아이템29. 완벽 공략 - 한정적 타입 매개 변수 Bounded Type Parameters - 매개변수화 타입을 특정한 타입으로 한정짓고 싶을 때 사용할 수 있다. ㆍ, 선언할 수 있는 제네릭 타입을 Number를 상속(extends)했거나..
-
아이템28. 배열보다는 리스트를 사용하라Java/이펙티브 자바 2023. 9. 23. 12:28
핵심 정리1 - 배열과 제네릭은 잘 어울리지 않는다. - 배열은 공변(covariant), 제네릭은 불공변 - 배열은 실체화(reify) 되지만, 제네릭은 실체화 되지 않는다. (소거) ㆍ제네릭은 컴파일할 때 타입이 사라진다. - new Generic[배열] 은 컴파일 할 수 없다. - 제네릭 소거 : 원소의 타입은 컴파일 타임에만 검사하며 런타임에는 알 수 없다. public static void main(String[] args) { // 공변 : 같이 변한다. Object[] anything = new String[10]; anything[0] = 1; // 잘못된 동작이지만 컴파일러가 잡지 못한다. - 런타임 에러 // 불공변 : 같이 변하지 않는다. List names = new ArrayLis..