2012-07-24 7 views
0

내가 그 하위 클래스에 의해 확장되는 하나의 추상 클래스가 있고 내가 수퍼 클래스에서 보호 된 데이터 형식에 사용되는 클래스를 조롱하고 싶습니다. 문제는 조롱 받아야하는 클래스가 기본 데이터 유형이므로 패키지 외부에서 액세스 할 수 없다는 것입니다. 나의 요점을 분명히하기위한 예를 들어 보겠습니다. 당신의 도움을 주셔서 감사합니다. 내가 Jmockit를 사용하여 테스트 할 때 추상 클래스의 기본 유형 변수를 조롱

class protectedVariableClass{ 

    public SomeObject someObject1; 
    public SomeObject someObject2; 
    } 

    public abstract class superClass { 

    protected protectedVariableClass protectedVariableClass; 

    .................. 
    ................. 
    } 

    public class subClass extends superClass { 

    protected boolean someMethod() { 
    protectedVariableClass.someObject1.printValue; 
    } 

    } 

는 지금은 슈퍼 클래스의 보호 된 변수에 대한 모의를 작성할 수 없습니다입니다.

public class SubClassTest{ 

    @Mocked 
    private protectedVariableClass mockedObject; // Cannot access the class with default data type outside package. 

    @Test 
    public void testClass { 
    subClass s1 = new subClass(); 
    s1.someMethod(); 
    } 

    } 

답변

0

당신은 @MockedrealClassName 속성을 사용할 수 있지만 가장 좋은 방법은 모의 하지 비 액세스 클래스 될 것입니다.

테스트하려는 일부 클래스가 package-private 클래스를 사용한다는 사실은 일반적으로 구현 세부 사항이므로 테스트 코드에 나타나서는 안됩니다. 테스트 코드에서 호출 한 private 메서드에도 동일하게 적용됩니다. 이러한 메서드는 조롱되어서는 안됩니다.

관련 문제