JUnit 테스트에서 Data의 검증을 위해 assertThat() 메소드를 사용한다.
하지만 assertThat() 메소드는 Exception을 테스트하기에 적절하지 않다.
이 경우엔 다른 방법으로 테스트를 진행해야한다.
Exception을 테스트하기 좋은 방법 중 하나는
Test 애노테이션의 expected 필드를 사용하는 것이다.
사용법은 expected에 기대하는 예외 클래스를 넣어주기만 하면 된다.
Step 1.
다음 조건의 클래스를 읽어 온다.
Annotation : @Test 애노테이션 존재 O
Access Level : public
Return Type : void
Parameter : Parameter 존재 X
Step 2.
Step 3.
Step 4.
Step 5.
Step 6.
Step 7.
언어별 차이를 비교하는 글을 보다 흥미로운 부분이 있어서 가장 흥미로웠던 부분만 발췌를 해본다.
상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다.
변하지 않는 기능은 슈퍼클래스에 만들어두고
자주 변경되며 확장할 기능은 서브클래스에서 만들도록 한다.
슈퍼클래스에서는 미리 추상 메소드 또는 오버라이드 가능한 메소드를 정의해두고
이를 활용해 코드의 기본 알고리즘을 담고 있는 템플릿 메소드를 만든다.
슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가
서브클래스에서 선택적으로 오버라이드 할 수 있도록 만들어둔 메소드를 훅(hook) 메소드라고 한다.
서브클래스에서는 추상 메소드를 구현하거나,
훅 메소드를 오버라이드하는 방법을 이용해 기능의 일부를 확장한다.
스프링 프레임워크는
평범한 POJO(Plain Old Java Object)를
사용하면서도 많은 일을
가능하도록 지원한다.
또한 많은 디자인 패턴이 적용되어 배포되므로
프레임워크를 사용하는 것 자체가
디자인 패턴을 사용하는 것이다.
POJO란?
POJO란 말 그대로 평범한 옛날 자바 객체를 의미한다.
POJO를 좀 더 쉽게 이해하기 위해서
반대로 Not POJO에 대해 알아보자.
대표적인 Not POJO 클래스는 Servlet 클래스이다.
Servlet 클래스는 우리 마음대로 만들 수 없으며,
반드시 Servlet에서 요구하는 규칙에 맞게 클래스를 만들어야 실행할 수 있다.
다음은 Servlet 클래스 작성 규칙이다.
1. javax.servlet, javax.servlet.http 패키지를 import해야 한다.
2. public 클래스로 선언되어야 한다.
3. Servlet, GenericServlet, HttpServlet 중 하나를 상속해야 한다.
4. 기본 생성자(Default Constructor)가 있어야 한다.
5. 생명주기에 해당하는 메소드를 재정의(Override)해야 한다.