51Testing软件测试论坛
标题:
单元测试代码无法覆盖
[打印本页]
作者:
巴黎的灯光下
时间:
2017-6-23 11:36
标题:
单元测试代码无法覆盖
/// <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>
[TestMethod]
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:24
如果删除代码也可以保证测试运行通过,那么删除代码。
另外不要乱写单元测试。那种“以代码覆盖率为目的”的方式是错误的。单元测试应该针对验收功能测试。如果为了覆盖率而乱写代码元测试,只会强化一堆低级无用的代码的存在,并不能提高用户需求的验证功能。
作者:
巴黎的灯光下
时间:
2017-6-23 13:25
大家都不在么,若方法中包括异常,应该如何测试。
作者:
悠悠小仙仙
时间:
2017-6-23 13:26
巴黎的灯光下 发表于 2017-6-23 13:25
大家都不在么,若方法中包括异常,应该如何测试。
与异常无关,你的代码根本就是多余的。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2