JUnit5 테스트 이름 표기하기 테스트를 실행하게 되면 Test Results에 @Test 메소드명이 찍히게 된다. 애노테이션을 활용하여 테스트 이름을 변경시킬 수가 있다. @DisplayNameGeneration @DisplayName @DisplayNameGeneration 클래스에 해당 애노테이션을 붙이면 @Test 메소드 이름에 _로 표시한 모든 부분은 space로 처리된다. @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) class StudyTest { } 클래스와 메소드에서 사용가능하다. @DisplayName @Test 메소드에 해당 애노테이션을 붙이면 사용자가 정의한 이름으로 테스트 이름을 표기할 수 있다. @T..
JUnit5 소개 JUnit5 란 자바 개발자가 가장 많이 사용하는 테스팅 프레임 워크다. JUnit Platform에 의해서 Test를 실행해주고, TestEngine API의 구현체인 Jupiter를 활용하여 Test 소스를 작성할 수 있다. JUnit 5의 기본 애노테이션 @Test 테스트를 진행하고자 하는 메소드를 구현할 때 사용한다. @BeforeAll @Test를 모두 실행하기 전에 딱 한번만 호출 되는 것이다. @AftereAll @Test를 모두 실행한 후에 딱 한번만 호출 되는것이다. @BeforeEach @Test를 모두 실행할 때 각각의 @Test가 실행되기 전에 호출되는 것이다. @AfterEach @Test를 모두 실행할 때 각각의 @Test가 실행된 후에 호출되는 것이다. @Di..
추상클래스와 인터페이스 추상 메소드의 구현 강제성 추상 클래스 추상 클래스는 클래스 내에 추상 메소드가 하나 이상 포함거나 abstract로 정의된 경우를 말한다. 인터페이스 인터페이스는 모든 메소드가 추상 메소드인 경우를 말한다. 추상 클래스와 인터페이스는 상속받는 하위 클래스 혹은 구현 클래스에서 추상 메소드를 구현하도록 강제한다 추상클래스와 인터페이스 목적 그렇다면 의문이 들 수 있다. 인터페이스는 왜 필요하지? 그냥 추상 클래스로 인터페이스 역할까지 하면 되는거 아닌가? 둘은 존재 목적이 다르다. 추상클래스는 해당 추상 클래스를 상속받아서 확장하기 위해 존재하는 것이다. 추상 클래스는 단일 상속만 받아서 확장을 하고자 하는 것이다. 인터페이스는 구현한 객체들이 동일한 동작을 약속하기 위해 존재하는..
정보은닉과 접근제한자 정보은닉이란, 잘 설계된 컴포넌트는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐이다. 즉, 오직 API를 통해서만 다른 컴포넌트와 소통하고 서로의 내부 동작 방식에는 개의치 않는 것을 말한다. 그럼, 정보은닉의 장점을 살펴보자 시스템 개발 속도를 높여준다. 여러 컴포넌트들이 독자적이어서 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춰준다. 다른 컴포넌트로 교체하는 부담이 적기 때문이다. 정보은닉 자체가 성능을 줄여주지는 않지만 성능 최적화에는 도움을 준다. 다른 컴포넌트에 영향을 주지않고 해당 컴포넌트만 최적화할 수 있는 기회가 생기기 때문이다. 소프트웨어 재사용성을 높여준다. 외부에는 거의 의존하지 않고 독자적으로 동작할 수 있는 ..
접근제한자 접근 제한자는 클래스 내에서 멤버의 접근을 제한하는 역할을 한다. 접근 제한자의 종류 public 모든 클래스에서 접근이 가능하다. protected 같은 패키지내에서만 접근이 가능하다. 서로 다른 패키지라도 상속받은 하위 클래스에서는 접근이 가능하다. private 자기 자신만이(자기 클래스) 접근이 가능하다. default(접근 제한자 적지 않으면) 같은 패키지내에서만 접근이 가능하다(protected와 비슷) 정보은닉과 접근제한자 참고 https://it-mesung.tistory.com/41?category=813111 [Effective Java] 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 it-mesung.tistory.com
상속(Inheritance)과 구성(Composition) 상속을 사용하는 이유 공통적인 부분을 가지고 있는 상위 클래스를 활용하여 하위 클래스는 본인 고유의 상태와 행동을 정의하기 위함이다. 코드의 확장성, 재사용성이 용이하고 중복된 코드를 상위 클래스로 뺐으므로 코드가 간결해진다. 결과적으로, 유지보수가 쉬워진다는 점이다. 상속 정의 하위 클래스는 상위 클래스의 모든 메소드를 재사용할 수 있고, 재정의를 하여 하위 클래스만의 메소드로 변경할 수도 있다. public class Car{ public void print() { System.out.println("부릉부릉"); } } public class Tico extends Car{ @Override public void print() { Syste..
오버로딩 왜 오버로딩을 사용하는가? 객체가 커지면 커질수록 메소드의 개수는 많아진다. 이 때, 근본적으로는 같은 기능을 하지만 이름 짓기가 애매하고 사용하는 쪽도 메소드만 보고 확실한 개념을 잡기에 어려워 오버로딩을 사용한다. 객체적으로 접근해봤을 때는, 사용하려는 객체의 메소드만 알고 있으면 해당 메소드(오버로딩 메소드)는 여러 파라미터를 가지고 있어 객체간의 메시지 전송이 원활하다. 흔히 알고 있는 오버로딩 오버로딩 조건 메소드 이름은 같아야 한다. 파라미터 개수나 타입이 달라야 한다. return 타입은 상관이 없다. //생성자 오버로딩 public class BasicOverLoading { String brandName; int since; public BasicOverLoading(int si..
enum 열거형이라고 칭하고, JDK5부터 추가되었다. JDK5 전에는 상수를 활용하여 열거형의 개념을 표현했다. public class EnumStudy { public static final String MALE = "MALE"; public static final String FEMALE = "FEMALE"; public static void main(String[] args) { String gender; gender = EnumStudy.MALE; gender = EnumStudy.FEMALE; } } 상수를 사용했을 때 문제가 발생한다는 것을 찾을 수 있었다 gender라는 String 변수는 처음 "MALE"이라는 변수로 고정되기를 원하는데, 다음 라인에서 "FEMALE"로 변경되는 것을 볼..
- Total
- Today
- Yesterday
- 김영한
- flatMap
- 점층적 생성 패턴
- springboot
- junit
- java8
- 복사 팩토리
- 이펙티브 자바
- 연관관계
- java
- JPA
- @Lazy
- 자바8
- 스프링부트
- 정적팩터리메서드
- 빌더 패턴
- mustache
- ifPresent
- jdk버전
- 인프런
- 빈 순환 참조
- Effective Java
- 이펙티브자바
- effectivejava
- 팩토리 메소드 패턴
- 생성자
- try with resources
- package-private
- try catch finally
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |