class Person {
private String firstName;
private String lastName;
// getters and setters for firstName, lastName
}
@Test
void test() {
Person p = mock(Person.class);
when(p.getFirstName()).thenReturn("John");
when(p.getLastName()).thenReturn("Peter");
Map<String, Object> someContainerLikeMap = new HashMap<>();
org.springframework.util.ReflectionUtils.doWithFields(p.getClass(), field -> {
someContainerLikeMap.put(field.getName(), field.get(p));
// field.get(p) above, always get null
}
}
我有两个问题:
通过场反射得到,
field.get(p)
总是得到null
;字段的迭代,什么是最好的方法,只是有字段定义在类Person包括,即firstName, lastName?
Mockito完全通过使用"代理对象"自动子类化方法来工作;它根本不重写、更改或模拟字段。