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

如何为带out参数的C# Add方法编写单元测试?

如何为带out参数的Add方法编写单元测试(100%覆盖率)

先看被测方法:

public static double Add(out double sum, double summandOne, double sumandTwo )
{
    sum = summandOne + sumandTwo;
    return sum;
}

任务要求:实现100%代码覆盖率的单元测试。

你写的测试代码存在几个问题:

[TestMethod()]
public void AddTest(out double sum, double sumOne, double sumTwo)
{
  sum = sumOne + sumTwo;
  program.Add(out sum, sumOne, sumTwo);
  Assert.AreEqual(25, 20,5);
}

错误点分析

  • 单元测试方法不能定义out参数和输入参数,测试方法需为无参结构,测试数据应在方法内部定义
  • Assert.AreEqual参数顺序错误,正确顺序是预期值在前,实际值在后,且第三个参数是精度容差,不能用逗号分隔写5
  • 无需提前给out参数赋值,out参数会被被测方法内部覆盖

正确的单元测试代码(MSTest)

[TestMethod]
public void AddTest_CalculatesCorrectSum()
{
    // 定义测试输入与预期结果
    double num1 = 20;
    double num2 = 5;
    double expectedSum = 25;
    double outSum;

    // 调用被测方法
    double returnValue = Program.Add(out outSum, num1, num2);

    // 验证返回值是否符合预期
    Assert.AreEqual(expectedSum, returnValue, 0.0001);
    // 验证out参数是否被正确赋值
    Assert.AreEqual(expectedSum, outSum, 0.0001);
}

为什么这样写能达到100%覆盖率

被测方法只有一行核心逻辑,只要调用一次就能覆盖所有代码路径。同时验证返回值和out参数,确保方法的两个输出都符合预期,避免遗漏逻辑验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:01:07