巴黎的灯光下 发表于 2017-6-23 11:36:01

单元测试代码无法覆盖

   /// <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:24:41

如果删除代码也可以保证测试运行通过,那么删除代码。

另外不要乱写单元测试。那种“以代码覆盖率为目的”的方式是错误的。单元测试应该针对验收功能测试。如果为了覆盖率而乱写代码元测试,只会强化一堆低级无用的代码的存在,并不能提高用户需求的验证功能。

巴黎的灯光下 发表于 2017-6-23 13:25:47

大家都不在么,若方法中包括异常,应该如何测试。

悠悠小仙仙 发表于 2017-6-23 13:26:21

巴黎的灯光下 发表于 2017-6-23 13:25
大家都不在么,若方法中包括异常,应该如何测试。

与异常无关,你的代码根本就是多余的。
页: [1]
查看完整版本: 单元测试代码无法覆盖