单元测试代码无法覆盖

冬冬冬冬冬冬冬冬冬冬 2014-09-01 05:55:26
        /// <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无法覆盖,
这个应该怎么处理呢。
...全文
618 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
确实钻牛角尖了。
安宁 2014-09-17
  • 打赏
  • 举报
回复
你都tryparse了。。还会有异常出现么?
  • 打赏
  • 举报
回复
引用 1 楼 chaoyangzhixue 的回复:
大家都不在么,若方法中包括异常,应该如何测试。
与异常无关,你的代码根本就是多余的。
  • 打赏
  • 举报
回复
如果删除代码也可以保证测试运行通过,那么删除代码。 另外不要乱写单元测试。那种“以代码覆盖率为目的”的方式是错误的。单元测试应该针对验收功能测试。如果为了覆盖率而乱写代码元测试,只会强化一堆低级无用的代码的存在,并不能提高用户需求的验证功能。
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
[quote=引用 1 楼 chaoyangzhixue 的回复:] 大家都不在么,若方法中包括异常,应该如何测试。
与异常无关,你的代码根本就是多余的。[/quote] 那么异常应在何处使用?
  • 打赏
  • 举报
回复
大家都不在么,若方法中包括异常,应该如何测试。

5,177

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 质量管理/软件测试
功能测试压力测试安全性测试 个人社区 湖南省·长沙市
社区管理员
  • 软件测试
  • 虫无涯
  • 小博测试成长之路
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家加入到软件测试的社区,在这里,希望大家勇于发表自己的看法,欢迎大家分享自己在软件测试工作过程中遇到的问题以及工作经验分享。

1.想转行的小伙伴,遇到问题没有及时回复的,可以私聊小博进行反馈

2.大家对社区有好的建议,都可以在社区发帖进行反馈

推荐大家学习的软件测试入门笔记:软件测试入门学习笔记

试试用AI创作助手写篇文章吧