2016-07-13 7 views
0

여기 내 문제가 있습니다. Im UnderClest를 테스트하면서, SuperClass를 확장합니다. SuperClass에는 개인 맵 ("myMap")과 그것을 느끼는 개인적인 메소드가 있습니다. Im이 new() 생성자로 UnderTest 클래스의 인스턴스를 만들 때 수퍼 클래스의 myMap이 초기화되지 않습니다. (현실에서는 전체 시스템의 프레임 워크에 의해 수행됩니다. 테스트의 원인으로는 할 수 없습니다.). 맵이 == 널이기 때문에 NullPointerException을 수신하는 테스트를 실행할 때; 나는 invoke()를 사용하여 메소드를 모의하려고했지만 여전히 동일한 예외가 발생하기 때문에 잘못된 것이있다. 어디 클래스는, 조롱의jmockit을 사용하여 저녁 식사 클래스의 개인 메소드를 조롱 할 수 있습니다.

Class ThestSomething{ 

@Mocked 
SuperClas superClass; 

@BeforeMethod 
public void setUp 
{ 
UnderTest underTest = new UnderTest(); 
} 


@Test 
public void testThis() 
{ 
new Expectetions {{ invoke("superClass", "innerMethod", str, obj); }}; 
} 

답변

0

대신 jmockit으로 실행

public class UnderTest extends SuperClass 
{ 
    public void methodUnderTest() 
    {.... 
    put(str, obj); 
    ....} 
} 

public class SuperClass 
{ 
    private Map<String, Object> myMap; 

    private void innerMethod (String str, Object obj) 
    {.... myMap.put(str, obj);} 

} 

내 실수 테스트에서 제대로 초기화 객체 생성 :

public class ExampleTest { 
    @Tested HashMap<String, Object> myMap; 
    @Tested(fullyInitialized = true) UnderTest underTest; 

    @Test 
    public void example() { 
     underTest.methodUnderTest(); 

     assertEquals(<expected value>, myMap.get("expected key")); 
     // other assertions... 
    } 
}