You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为C#中ICloneable显式实现的Clone()方法编写测试用例获取覆盖率

问题原因

你采用了显式接口实现的方式编写ICloneable.Clone()方法,该方法只有在变量类型被显式声明为ICloneable时才会被调用。你平时直接用Blue类实例调用Clone()时,走的都是public new Blue Clone()重载,因此覆盖率工具统计不到显式实现的逻辑。

测试用例编写方法

你只需要在测试用例中将Blue实例强转为ICloneable类型后再调用Clone()方法,即可命中显式实现的代码,示例如下(以常用单元测试框架为例):

// 单元测试示例
public void ICloneableClone_Test()
{
    // 初始化测试用的Blue实例
    Blue original = new Blue();
    // 补充你需要的original属性初始化逻辑,比如给Node赋值
    original.Node = new YourNodeType();

    // 核心:转为ICloneable接口类型调用Clone,触发显式实现逻辑
    ICloneable cloneableInstance = original;
    object clonedResult = cloneableInstance.Clone();

    // 断言验证结果正确性
    Assert.NotNull(clonedResult);
    Assert.IsType<Blue>(clonedResult);
    Blue clonedBlue = (Blue)clonedResult;
    Assert.NotSame(original, clonedBlue);
    Assert.NotSame(original.Node, clonedBlue.Node);
}

运行上述测试用例后,你之前未覆盖的object ICloneable.Clone()方法就会被覆盖率工具统计到。


内容的提问来源于stack exchange,提问作者Rohan Nirer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:06:04