在模拟对象中设置私有字段
在你正在测试的类中,你可能有一些私有字段,即使通过构造函数也无法访问。在这种情况下,你可以使用反射来设置此类属性。这是来自此类 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 来做同样的事情。