在模擬物件中設定私有欄位
在你正在測試的類中,你可能有一些私有欄位,即使通過建構函式也無法訪問。在這種情況下,你可以使用反射來設定此類屬性。這是來自此類 JUnit 測試的片段。
@InjectMocks
private GreetingsService greetingsService = new GreetingsService(); // mocking this class
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
String someName = "Some Name";
ReflectionTestUtils.setField(greetingsService, // inject into this object
"name", // assign to this field
someName); // object to be injected
}
我在這裡使用 Sptring 的 ReflectionTestUtils.setField(Object targetObject, String name, Object value)
方法來簡化,但你可以使用普通的舊 Java Reflection 來做同樣的事情。