### Question:
PropertyField { public Object getValue(ENTITY entity) { AssertionUtil.assertNotNull(entity); Object value = entity; for (Field field : fields) { if (value == null) { break; } value = getFieldValue(field, value); } return value; } PropertyField(String path, Class<ENTITY> entityClass); Object getValue(ENTITY entity); void setValue(ENTITY entity, Object value); boolean isPrimitive();  }### Answer:
@Test public void testGetValue_simplePath() { Person person = new Person(); person.name = "hoge"; PropertyField<Person> path = new PropertyField<>("name", Person.class); assertEquals("hoge", path.getValue(person)); }
@Test public void testGetValue_parentPath() { Person person = new Person(); person.kind = "hoge"; PropertyField<Person> path = new PropertyField<>("kind", Person.class); assertEquals("hoge", path.getValue(person)); }
@Test public void testGetValue_nestedPath() { Person person = new Person(); person.address = new Address("island", "Tokyo", "Yaesu"); PropertyField<Person> path = new PropertyField<>("address.city", Person.class); assertEquals("Tokyo", path.getValue(person)); }
@Test public void testGetValue_nestedPath_null() { Person person = new Person(); PropertyField<Person> path = new PropertyField<>("address.city", Person.class); assertNull(path.getValue(person)); }
@Test public void testGetValue_nestedParentPath() { Person person = new Person(); person.address = new Address("island", "Tokyo", "Yaesu"); PropertyField<Person> path = new PropertyField<>("address.kind", Person.class); assertEquals("island", path.getValue(person)); }