我正在尝试研究单元测试最佳实践,但遇到了一个我无法理解的问题。生产代码具有将给定对象转换为另一个对象的函数,如下所示:
原始对象:
public OriginalObject
{
public string Id {get; set;}
public string Value {get; set;}
public int FormCode {get; set;}
public int NameCode {get; set;}
//other properties
}
public TransformedObject
{
public string Value {get; set;}
public int FormCode {get; set;}
//other properties
}
变换功能:
public TransformedObject Transform(OriginalObject originalObject)
{
var TransformedObject = new TransformedObject();
TransformedObject.Value = originalObject.Value;
TransformedObject.FormCode = originalObject.FormCode;
return TransformedObject;
}
测试看起来像这样:
[Test]
public void Transform_NonNullOptionObject_ValuePropertyIsTheSame()
{
OptionObjectTransform transform = InitTransform();
CustomOptionObject result = transform.Transform(optionObject);//mock optionObject
Assert.AreEqual(optionObject.Value, result.Value);
}
所以我的问题是我必须为每个属性编写一个测试吗?或者有没有办法使用[TestCase]
传递我要测试的属性?或者测试是否应该检查所有属性是否相等?我不认为最后一个是解决方案,因为如果测试失败,那么我们将不知道哪些属性不匹配。