TDD로 스택 구현하기
스택(Stack)의 개념
한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조이다.
스택(Stack)의 연산
•
pop() : 스택에서 가장 위에 있는 항목을 제거한다.
•
push(item) : item 하나를 스택의 가장 윗 부분에 추가한다.
•
peek() : 스택의 가장 위에 항목을 반환한다.
•
isEmpty() : 스택이 비어 있을 때 true를 반환한다.
Junit5 어노테이션
Test code를 작성할 때 사용하는 어노테이션을 정리한다.
Junit5의 기본 어노테이션은 다음과 같다.
@Test, @BeforeAll, @BeforeEach, @AfterAll, @AfterEach, @Disabled, @DisplayName
•
@Test : 이 어노테이션을 붙이면 Test 메소드로 인식하고 테스트 한다. Test 메소드는 Test 클래스 자체를 실행하지 않고도 개별 실행(개별 Test)이 가능하다.
•
@BeforeAll : 이 어노테이션을 붙이면 그 메소드는 Test 클래스를 초기화 할 때 딱 한 번 수행된다. 메소드 접근제어자는 static으로 선언해야 한다.
•
@BeforeEach : 이 어노테이션을 붙이면 그 메소드는 Test 메소드가 실행되기 전에 수행된다. 개별 Test 메소드를 실행하였을 때 @BeforeEach 는 수행되지만, @BeforeAll은 수행되지 않는다.
•
@AfterAll : 이 어노테이션을 붙이면 그 메소드는 Test 클래스를 모두 실행시킨 후 딱 한 번 수행된다. 메소드 접근제어자는 static으로 선언해야 한다.
•
@AfterEach : 이 어노테이션을 붙이면 그 메소드는 Test 메소드가 실행된 후 수행된다. 개별 Test 메소드를 실행하였을 때 @AfterEach 는 수행되지만, @AfterAll은 수행되지 않는다.
•
@Disabled : 이 어노테이션을 붙이면 그 메소드는 무시된다.
•
@DisplayName : Test 클래스 혹은 메소드의 사용자 정의 이름을 선언한다.
Junit5 Assertions
Test code를 작성할 때 사용하는 Assertions를 정리한다.
1. assertEquals
•
두 값을 비교하여 일치 여부 판단
2. assertTrue & assertFalse
•
특정 조건이 true인지 false인지 판단
3. assertThrows
•
특정 예외가 발생하였는지 확인
•
첫 번째 인자는 확인할 예외 클래스
•
두 번째 인자는 테스트 하려는 코드
TDD로 스택 구현하기
Spring
스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.
스프링의 주요 특징
POJO (Plain Old Java Object) 방식
•
‘순수하고 역사있는 자바 객체’ 방식을 지향한다.
•
스프링 프레임워크 이전에는 특정 기술과 환경에 종속되어 자바가 객체지향 설계의 장점을 잃어버리는 경우가 많았다.
•
스프링은 이러한 방식을 지양하며 POJO를 따른다.
•
의존성 주입 (Dependency Injection, DI)
•
의존 관계는 의존 대상이 변했을 때 그에 영향을 받을 수 있는 관계이다.
•
가령 햄버거 가게 요리사는 햄버거 레시피에 의존할 수 있다. 코드는 다음과 같다.
class BurgerChef {
private HamBurgerRecipe hamBurgerRecipe;
public BurgerChef() {
hamBurgerRecipe = new HamBurgerRecipe();
}
}
Java
복사
•
의존성 주입은 BurgerChef가 의존하고 있는 HamBurgerRecipe를 외부에서 결정하고 주입하는 것이다.
•
이러한 의존성 주입은 코드 재사용을 높이고 모듈 간의 결합도를 낮춘다. 또한 테스트하기 좋은 코드가 된다.
추가할 내용
•
bean이 뭘까
•
container가 뭘까
•
autowired가 뭘까
•
예외처리