2013-04-24 76 views

回答

1

Mockito通過創建一個模擬使用您試圖愚弄的相同內省庫。即使你可以哄騙它工作,但我不確定要理解或維護是多麼容易。

我建議創建一個非常小的嵌套類,並在其上運行正常:

public class YourTest { 
    private static class SampleClass { 
    String field1; 
    int field2; 
    } 

    @Test public void introspectionWorks() { 
    yourSUT.process(new SampleClass()); 
    } 
} 

除非是,提取難以模擬的呼叫到一個方法,你可以很容易地存根:

public class YourSUT { 
    /* ... */ 

    /* package */ Class<?> getFieldType(Object object, String fieldName) { 
    return object.getClass().getDeclaredField(fieldName).getType(); 
    } 
} 

public class YourTest { 
    @Test public void introspectionWorks() { 
    YourSUT spy = Mockito.spy(yourSUT); 
    doReturn(String.class).when(spy).getFieldType(myObject, "someStringField"); 
    } 
}