如何为带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
相关产品推荐
相关产品推荐

