我正在测试一个类(除了与其他人交互之外)创建一个对象,其中包含由调用者传递的常量和值组成的字段:
private String createService(Long organizationId, String prototypeId,
MedicalService medicalService)
{
ServiceType service = new ServiceType();
service.setClinic(organizationId.toString());
service.setType("0");
service.setPrototype(prototypeId);
service.setCode(medicalService.getCode());
service.setName(medicalService.getName());
service.setIndependent(true);
service.setRepeated(false);
return remoteWS.createService(service);
}
我应该测试每个字段是否设置得当?
我怀疑的原因是它会引入重复并降低可读性。特别是我倾向于做反思断言。
这只会让我发现一些"愚蠢的"输入错误,例如如果两者都属于code
类型,请将name
写入String
字段。
这种重复是否合理?
答案 0 :(得分:2)
解决这个问题的一种方法:如果你有"数据"属于"在一起"不知何故,那些数据值得拥有类。
对于这种情况,scala会将value class称为scala,或者kotlin将其称为data class。换句话说:一个只存在于一个" set"价值观。
核心方面:例如,为equals()
方法提供合理的实现(在考虑Java术语时)。换句话说:您启用比较dataObjectA.equals(dataObjectB)
的比较,后者反过来比较该类的所有字段。
然后你通过在单元测试中创建该数据类的这样一个实例来使用它,并携带所有预期的值。
这是否值得努力的问题不是其他人可以告诉你的。您必须评估A)角落出错的可能性B)此类错误的成本。
从TDD的角度来看,你甚至会测试这些细节。
我的个人想法:有时必须要务实。只是"记录"的单元测试生产代码的作用在我看来并不太有用。尽管如此,有时除此之外别无他法。在这个意义上:我建议测试这些细节,但是我会退后一步,设计一个解决方案,使相应的测试编写尽可能简单直接。
换句话说:我会测试这些东西,但要确保我能用最少的努力做到这一点。