2010-11-24 9 views
1

인터페이스 중 하나를 구현하는 추상 클래스 중 하나를 테스트해야합니다. 추상 클래스에 인수가있는 생성자가 있습니다. Mockito를 테스트 프레임 워크로 사용하고 있습니다. 추상 클래스의 메서드를 호출해야하는 경우 가장 좋은 방법은 무엇입니까?인수를 사용하여 생성자를 갖는 추상 클래스를 테스트하십시오.

추상 클래스를 서브 클래스하려고하면 인수 생성자를 구현하고 인수가없는 생성자를 쓰지 않도록 요청합니다. 또한 no-arg 생성자없이 클래스를 조롱하고 메소드에 sysouts를 넣으려고하면 대개 junit 실패는 발생하지 않지만 호출 된 클래스가 필수 인수가없는 생성자가 필요합니까?

도와주세요. 미리 감사드립니다.

+0

은 추상 클래스 인수 생성자가 protected입니까? 또한 나는 당신이 하위 클래스에서 매개 변수화 된 슈퍼를 호출한다고 가정합니다. 그렇지 않으면 컴파일 시간 오류가 발생합니다. 코드를 게시 할 수 있습니까? @Ralph가 지시하는 가장 좋은 방법은 구체적인 하위 클래스를 구현하는 것이며, 일반적으로 계층 구조에 여러 추상 클래스가있는 경우 구현하는 최종 자손입니다. 어떤 추상 클래스도 부모로부터 메소드를 오버라이드하지 않는다는 가정에 따라 오류 증명이되지 않습니다. 이 경우 부모 메서드와 재정의 된 메서드를 모두 테스트해야합니다. – pmu

답변

2

추상 클래스를 테스트하는 한 가지 방법은 테스트 용으로 만 하위 클래스를 구현하는 것입니다.

추상 클래스가 인수 만 생성자가있는 경우 당신이 할 수있는 여러 가지 : 인수에

  • 패스 널
  • 패스 조롱 오브젝트 인수로 인수에
  • 패스 구체적인 객체

당신이 선택한 방식은 테스트 케이스와 추상 클래스의 구현에 달려 있습니다. 물론 방법을 혼합 할 수 있습니다.

예 : BTW

abstract class A{ 
    A(Object o) { 
    } 
} 

class TheNullWay extends A { 
    TheNullWay() { 
    super(null); 
    } 
} 

class TheMockedWay extends A { 
    TheMockedWay(Object o){ 
    super(o); 
    } 
} 

new TheMockedWay(createMockedObject()); 

: 그것은 추상 클래스를 사용하는 클래스를 테스트하는 완전 다른 것입니다.

관련 문제