ICloneable 的 C# 测试用例
Posted
技术标签:
【中文标题】ICloneable 的 C# 测试用例【英文标题】:C# test cases for ICloneable 【发布时间】:2022-01-09 11:02:57 【问题描述】:如何在编写测试用例时获得object ICloneable.Clone()
方法的覆盖率。
#region ICloneable Members
object ICloneable.Clone()
return this.Clone();
public new Blue Clone()
Blue _temp = (Blue)this.MemberwiseClone();
_temp.Node = Node.Clone();
return _temp;
#endregion
目前的覆盖范围是这样的
.
【问题讨论】:
你不能只new
你的类的实例,设置所有的属性。然后克隆它并断言属性的值。直接调用它,并通过转换为IClonable
,将结果转换回您的类型
我希望我可以修改现有功能的实现方式,但我不能;只需要编写测试用例。 @Flydog57
我正在描述两个测试,而不是更改现有代码
好吧,你的意思是这样吗? ICloneable 可克隆 = (ICloneable) blue.Clone();我试过但没有覆盖。
@RohanNirer object b = ((ICloneable)blue).Clone();
请注意,在调用 Clone
之前先将蓝色转换为 ICloneable
。您可以随时回退以进行比较和断言
【参考方案1】:
虽然这些可能是不同的情况,但这里有一个非常简化的测试/覆盖所示代码的示例。
//Arrange
Blue expected = new(); //populate as needed
//Act
Blue a = expected.Clone();
Blue b = (Blue)((ICloneable)expected).Clone();
//Assert - using FluentAsertions - cases should be self explanatory
a.Should().BeEquivalentTo(b);
a.Should().BeEquivalentTo(expected);
b.Should().BeEquivalentTo(expected);
【讨论】:
以上是关于ICloneable 的 C# 测试用例的主要内容,如果未能解决你的问题,请参考以下文章