最近我们的系统中有一个错误,是由于忘记在复制构造函数中分配新添加的类属性引起的。
例如:
public class MyClass {
private Long companyId;
private Long classId;
private Double value; <= newly added
public MyClass(MyClass myClass) {
this.setCompanyId(myClass.getCompanyId());
this.setClassId(myClass.getClassId());
this.setValue(myClass.getValue()); <= we forget this line
}
我想编写一个单元测试,以保证在添加新属性时捕获丢失的副本分配。我该如何处理?
最佳答案
我会通过反射(reflection)来做到这一点。
- 新建一个
MyClass
的实例。 (一) - 通过反射,为每个字段赋值。这可以通过
getClass().getDeclaredFields()
来完成。 - 新建一个
MyClass
的空白实例。 (二) - 针对 B 在 A 上运行复制构造函数。
- 通过反射判断A中的字段是否等于B。
关于java - 如何编写单元测试来检查复制构造函数是否与类属性同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53856766/