因此,我有一个生成器类,如下所示:
class Person
{
private String age = "";
private String name = "";
public Person withAge(final String age)...
public Person withName(final String name)...
public Person build()...
// Now my question is due to this function
public Person copyWithSomeChange(){
Person person = new Person;
person.
withAge(this.age+1).
withName(this.name).
build();
}
}
因此,上面的类有一个copyWithSomeChange()方法,它使用现有的Person对象创建新的Person对象。
现在,我想确保如果有人向Person类添加了一个新字段,比如SSN,那么他们也不会忘记将该字段添加到copyWithSomeChange()中。我已经使用反射创建了一个单元测试,并做了一些修改,如下所示,但它似乎不太正确。
@Test
public void copyWithSomeChange() throws IllegalAccessException, NoSuchFieldException {
Person person1 ;// some existing object
Person person2 = person1.copyWithSomeChange();
for (Field field : person1.getClass().getDeclaredFields()) {
final Field temp = person2.getClass().getDeclaredField(field.getName());
field.setAccessible(true);
temp.setAccessible(true);
Assert.assertNotEquals("Mismatch in values for field " + field.getName(), field.get(person1), temp.get(person2));
}
}
}
这个测试的工作方式是,它只是确保年龄和名称的默认值被更改。
我在这里采取了一个完全错误的方法,我认为这是一件很好的事情,但是如何以正确的方式去做呢?
https://stackoverflow.com/questions/56226697
复制相似问题