2012-05-08 1 views
1

코드 :junit 메소드의 체크인이 수퍼 클래스 또는 java의 자손 클래스에서 호출 된 방법은 무엇입니까?

ClassBase { 
    protected method1() { 

    protected methodA (par1, par2){ 

    ... } } 

    }; 
ClassA extends ClassBase { 
    @Override 
    protected methodA (par1, par2){ 
     ..... 
     }; 
    }; 

후 :

ClassA testClass=new ClassA(); 
testClass.methodA();    

는 methodA는 자손를 ClassA에서 호출 된 경우, 방법 methodA를 실행하는 경우 (JUnit을 할 수있다) 테스트하는 것이 가능합니까? 감사합니다. .

+0

내가 상상 한 것에서 이것은 상속 된 메서드를 숨기는 경우입니다 (이 경우 ClassBase의 MethodA). ClassBase에서 methodA를 호출하려면 다음과 같이 할 수 있습니다. ClassA obj; obj.super(). methodA ;. 그렇지 않으면 ClassA 메소드가 호출됩니다. – CosminO

답변

1

테스트 할 내용이 없습니다. ClassA 객체 (쉽게 테스트 할 수 있음)가 있고 methodA를 호출하면 ClassA의 재정의 메소드가 호출되었는지 확인할 수 있습니다. 그것은 Java 언어의 보증입니다. ClassA 객체를 수퍼 클래스로 캐스팅하는 경우에도 보장됩니다.

테스트하려는 경우 재정의 주석을 사용하여 ClassA의 메소드를 실제로 재정의 할 수 있습니다. 또는 특정 결과에 대해 테스트 할 수 있습니다. 오버라이드하는 메소드는 아마도 덮어 쓰기 된 메소드와 다른 것을 할 것입니다 (두 메소드가 같은 것으로 쓰일 경우, 그것을 덮어 쓰는 것은 의미가 없습니다). 그 차이점을 테스트하십시오.

+0

그리고보고있는 것이 믿는다면, 당신은 당신에게 이것을 확신시키기 위해 한 번 출력물을 사용할 수 있습니다. 그러나 @Thomas Uhrig와 같이 이것은 일어납니다 – Miquel

관련 문제