比较DTO是否等于Java中的域模型

时间:2019-03-05 16:06:30

标签: java unit-testing test-refactoring

我已经开始尝试使单元测试尽可能地简洁,然后我发现:如何以一种干净的方式比较包含10多个属性并共享其中一些属性的DTO和域模型(DM)但不是全部?

详细信息:可以有共享的属性,但是具有不同的类型或名称,因此在这种情况下不能使用反射。

示例:

class Person {
     private String id;
     private String name;
     private String lastName;
     private Date   dateOfbirth;
}

class PersonDto{
     private String id;
     private String name;
     private String lastName;
     private int    dateOfBirth;
}

DTO不应持有任何复杂的逻辑,因为它只是在客户端-控制器-服务之间传输数据。

要保留的DM,并在服务-存储库层之间提供信息。但是它不应该具有任何复杂的逻辑(到目前为止,还没有等号和哈希码)。

然后我在想...我应该创建一个TestHelperComparator来执行此操作吗?还是在DTO或DM中实现相互比较的方法?或在这种情况下的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

您可能在代码中的某处具有DTO到域的映射逻辑,例如PersonToDtoMapper类。确保映射逻辑封装在单独的类中。然后,您可以在单元测试中重用此映射器类,在需要比较时将其从一种格式转换为另一种格式。

只要在自己的测试中对PersonToDtoMapper进行了测试,那么在其他测试中重用它就不会有问题,如果PersonToDtoMapperTest失败,错误很容易被发现。