Whiteship's Note

Abstract Test

Java : 2006.11.28 20:26


테스트 클래스와 구현 클래스 간의 갯수가 일치 하지 않습니다. 이유는 인터페이스인 MemberDao 클래스에 대한 테스트 클래스를 만들지 않았기 때문입니다.

이 상황을 Abstract Test라는 아티클을 보면서 개선시켜 보겠습니다.

먼저 인터페이스에 대한 추상 테스트 클래스를 작성합니다. 추상 테스트 클래스는 몇가지 특성이 있는데 기본적으로 다음과 같은 코드가 기본 형태 입니다.

more..


일단 여기서 의문이 드는 것으로

1. 생성자에 String 매개변수가 있다는 점.
2. 팩토리 메소드인 createFoo()에서 Exception을 던지고 있는 모습.
3. 메소드 몇개가 final 이라는 점.

이 중에서 위에 두개는 아직 이해가되지 않지만 세번째 final은 오버라이딩으로 인해 sub class의 의도가 오염될 수 있는 것을 방지 하는 것 같습니다. Liskov 원칙과 관련이 있는 것 같습니다.

위를 따라서 MemberDaoTest 클래스를 작성합니다.

more..


이제 이 추상 테스트 클래스를 상속 받아서 추상 메소드를 구현할 클래스를 만들어야 합니다. 이 클래스의 팩토리 메소드에서 특정 구현 클래스의 객체를 리턴해둬야 할 것 같습니다. 역시 이 클래스에 대한 탬플릿도 있습니다.

more..


위 클래스를 따라서 구상 클래스를 작성합니다.

more..


이렇게 따라 할 수 있었습니다.

간단하게 Abstract Test를 만드는 순서를 정리하자면

1. 모든 인터페이스(or 추상 클래스)에 대한 추상 테스트 클래스를 작성하라.
2. 인터페이스에 대해서 구체적인 테스트들을 작성하라.(final 메소드들을 가리키는 듯)
3. 추상 테스트 클래스를 구현한 테스트를 작성하여 테스트 하라.

하지만 아직까지 의문점 1, 2는 풀리지 않네요. 차근 차근 봐야겠습니다.

에피소드

more..


'Java' 카테고리의 다른 글

JUnit Reloaded  (0) 2006.12.07
I/O Stream 구성  (0) 2006.12.07
Checked Exception VS Unchecked Exception  (0) 2006.12.01
냄새 나는 Switch 코드와 다형성  (3) 2006.11.30
Map 인터페이스 살펴보기  (0) 2006.11.29
Abstract Test  (6) 2006.11.28
상속을 이용한 다형성 vs 인터페이스를 이용한 다형성  (0) 2006.11.24
Throwable 계층구조  (0) 2006.11.21
상속에 대하여...  (6) 2006.11.20
assertEquals()는 같은 Type을 비교하라.  (2) 2006.11.18
Java에서 실수 표현 부정확성  (19) 2006.11.15
top