繁体   English   中英

如何编写单元测试来检查复制构造函数是否与类属性同步?

[英]How to write a unit test to check copy constructor is in sync with class properties?

最近我们在系统中遇到了一个错误,这个错误是由忘记在复制构造函数中分配新添加的类属性引起的。

例如:

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
    }

我想编写一个单元测试,保证在添加新属性时捕获丢失的副本分配。 我该怎么办呢?

我会用反思做这件事。

  • 新建一个MyClass实例。 (一种)
  • 通过反射,为每个字段分配一个值。 这可以通过getClass().getDeclaredFields()来完成。
  • 新建一个MyClass的空白实例。 (B)
  • 在A上运行复制构造函数。
  • 通过反射,确定A中的字段是否等于B.

您可以覆盖equals()方法并使用如下代码片段:

MyClass a = new MyClass();
// set properties of a
MyClass b = new MyClass(a);
Assert.assertEquals(a, b); // check that a.equals(b) returns true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM