2014-07-06 2 views
3

나는 개찰구부터 시작해서 TDD (물론 WicketTester 사용)를하고있다.
마크 업 상속을 사용하여 일반적인 레이아웃을 만들 때 문제가 발생했습니다.
this one을 비롯한 온라인 예를 살펴 보았습니다. 그러나 이러한 예제에서는 상위 클래스를 테스트하는 방법을 언급하지 않습니다.개찰구에서 추상적 인 페이지 클래스 테스트하기

문제는 상위 클래스가 추상이라는 점입니다. 즉, WicketTester은 페이지를 인스턴스화 할 수 없으며 예외를 throw합니다 (올바른 경우).
모의 클래스 나 가짜 클래스를 사용하여 클래스를 일반적인 POJO로 테스트 한 다음 해당 추상 부모에있는 개찰 컴포넌트를 테스트 할 수있는 능력을 잃을 것입니다.
내가 (API를 보았을 때까지 ...) 또 다른 해결책은 사용자 정의 IPageProvider을 제공하는 것이 었는데 예외를 던지기보다는 가짜 클래스/모의를 인스턴스화합니다. 그러나 API는 단 하나의 단위 테스트 용으로 구현되어야하는 것처럼 보이지 않습니다.

그동안, 나는 부모 클래스를 구체적인 클래스로 만들었고 다른 페이지 클래스와 마찬가지로 WicketTester으로 테스트합니다. 그러나이 예제는 상위 페이지의 추상 클래스를 사용하여 마크 업 상속을 구체적으로 보여줍니다. 이는 디자인 측면에서 볼 때 올바른 작업이라고 생각됩니다.

어떤 조언이 필요합니까?

답변

4

테스트 중에 익명 하위 클래스 인스턴스를 만들면됩니다.

WicketTester w = new WicketTester(); 
w.startPage(new AbstractPage() {}); 

물론 모든 필요한 추상화 방법을 구현해야합니다. 또한 AbstractPage에는 자체 HTML이 있어야합니다 (우수 사례).

+0

클래스 객체가 아닌 페이지의 인스턴스로'startPage'를 호출 할 수 있다는 것을 알지조차 모릅니다. 감사 ! – eitanfar

1

추상 부모 클래스의 테스트 하위 클래스를 만들고 WicketTester을 사용하여 테스트 할 수 있어야합니다.

비슷한 상황에서이 작업을 수행했으며 추상 부모 클래스의 구성 요소 렌더링 및 상호 작용을 확인하는 데 아무런 문제가 없었습니다.

+0

어떻게 하시겠습니까? 페이지를 테스트하려면 클래스 객체를'WicketTester'에 제공해야합니다. 그러면 WicketTester가 예외를 던집니다. 익명의 내부 클래스가 아닌 실제 서브 클래스가 있음을 의미합니까? 어쩌면 내가 테스트의 내부 클래스로 선언하면 ... 작동 할 수도 있습니다 ... – eitanfar

+0

예, 테스트를 수행하는 데 최상위 클래스 인 여러 클래스의 테스트에 필요한 경우에는 내부 클래스로 수행했습니다. 계층. –

관련 문제