2016-08-19 3 views
0

static 메서드를 추가하여 클래스 SourceClass에 추가하고 JUnit 테스트에서 add 메서드의 기능을 재정의하려고합니다. 예 :Junit 테스트에서 정적 메서드를 재정의하는 방법은 무엇입니까?

public class SourceClass { 
    protected static int add(int a, int b){ 
     //Do something 
    } 
} 

이 SourceClass에는 생성자가 없습니다. 의 JUnit 등급 (class) :

public class TestClass 
{ 
public void addTest() 
    { 
    //Trying to Override the add method here. 
    } 
} 

내가 @Override을 사용하고, 그것은 작동하지 않습니다. 누군가가 나를 제안 할 수 있습니까? 어떻게해야할까요?

참고 : 테스트 클래스에는 @PrepareForTest을 사용하지 않아야합니다.

+0

어떤 Java 버전을 사용하고 있습니까? – ByeBye

+1

클래스를 확장하지 않으면 메서드를 재정의 할 수 없습니다. 귀하의 소지품을 이해함에 따라, 귀하는이 방법을 조롱하고자하는 사람들 – Jens

+3

재정의는이 맥락에서 이해가되지 않습니다. 실제로 성취하려는 것은 무엇입니까? – Gray

답변

0

왜 필요합니까? 정적 메소드는 직접적으로 사용되어야합니다. 또한 정적 메서드의 경우 개체를 만들 필요가 없습니다. 추가 방법은 보호되고, 나는

public class TestClass 
{ 
@Test 
public void addTest() 
    { 
    assertEquals(SourceClass.add(2,5),7); 
    } 
} 
0

당신은 정적 메서드를 재정의 할 수 있습니다,하지만 당신은 그것을 위해 RTTI가되지 않습니다, 당신은 소스에있는 한 당신은 시험 같은 패키지 구조를 다음한다고 가정. 따라서 오버라이드로부터 많은 이점을 얻지 못할 것입니다.

그러나 댓글에서 누군가가 말했듯이 메서드를 포함하는 클래스를 확장 할 때만 메서드를 재정의합니다.

관련 문제