C#测试中如何将变量存入列表批量断言员工个税计算结果
问题解答
当然可以,这种实现方式会比你当前逐一定义变量、逐条断言的写法简洁很多,后续新增测试员工的校验规则也只需要修改预期值列表即可,维护成本更低。
优化后的代码示例
public void TestTax() { // 按_records的员工顺序定义预期个税值 var expectedTaxList = new List<double> { 652, 418, 2202, 1104, 1797.45 }; // 直接从_records提取所有实际个税值 var actualTaxList = _records.Select(emp => emp.Gross).ToList(); // 方法1:逐一比对,出错时可以明确知道是第几个员工的计算出问题 for (int i = 0; i < expectedTaxList.Count; i++) { // 浮点数比较建议加容差,避免精度计算导致的误判,这里示例用0.001适配两位小数的金额场景 Assert.AreEqual(expectedTaxList[i], actualTaxList[i], 0.001, $"第{i+1}位员工个税计算错误"); } // 方法2:如果你用的测试框架支持集合断言,写法更简单 // CollectionAssert.AreEqual(expectedTaxList, actualTaxList, delta: 0.001); }
注意事项
- 因为你用的是
double类型存储金额,建议做断言的时候添加容差参数,避免浮点运算精度误差导致的测试误报 - 要保证预期值列表的顺序和
_records里的员工顺序完全一致,否则会出现比对错位的问题
内容的提问来源于stack exchange,提问作者JUJU
相关产品推荐
相关产品推荐

