单元测试代码无法覆盖
/// <summary>/// 加法运算
/// </summary>
/// <param name="addend">加数</param>
/// <param name="augend">被加数</param>
/// <param name="msg">消息</param>
/// <returns>运算结果</returns>
public decimal Addition(string addend, string augend, out string msg)
{
msg = "";
decimal a = 0;//加数
decimal b = 0;//被加数
try
{
if (!decimal.TryParse(addend, out a))//转换加数
{
msg = "加数字符串转换失败。";
return 0;
}
if (!decimal.TryParse(augend, out b))//转换被加数
{
msg = "被加数字符串转换失败。";
return 0;
}
}
catch (Exception ex)
{
msg = ex.ToString();
}
return a + b;
} /// <summary>
/// 测试加法运算的结果
/// </summary>
public void TestAddition_result()
{
SuperCalc.Calculate cl = new SuperCalc.Calculate();
string msg = "";
decimal expected = 0;
decimal actual = 0;
//正常结果
Assert.AreEqual(50, cl.Addition("23", "27", out msg));
Assert.AreEqual(-1, cl.Addition("-1", "0", out msg));
//错误但能捕获到的结果
//加数格式不对
msg = "";
expected = 0;
actual = cl.Addition("ack", "145", out msg);
Assert.AreEqual(expected, actual);
Assert.AreEqual("加数字符串转换失败。", msg);
//被加数格式不对
msg = "";
expected = 0;
actual = cl.Addition("125", "adkc", out msg);
Assert.AreEqual(expected, actual);
Assert.AreEqual("被加数字符串转换失败。", msg);
}为该方法写的单元测试无法达到100%,因为catch无法覆盖,
这个应该怎么处理呢。
如果删除代码也可以保证测试运行通过,那么删除代码。
另外不要乱写单元测试。那种“以代码覆盖率为目的”的方式是错误的。单元测试应该针对验收功能测试。如果为了覆盖率而乱写代码元测试,只会强化一堆低级无用的代码的存在,并不能提高用户需求的验证功能。 大家都不在么,若方法中包括异常,应该如何测试。 巴黎的灯光下 发表于 2017-6-23 13:25
大家都不在么,若方法中包括异常,应该如何测试。
与异常无关,你的代码根本就是多余的。
页:
[1]