单元测试中的问题和解决方案

发表于:2008-3-07 17:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

分享:

1.2问题2
  然后GetPaperPart()方法中加入如下代码,测试边界情况:
            p = part.GetPaperPart(1000);//边界情况
            Assert.AreEqual(p, null);
  用以上代码测试边界条件时,状态条为红色。
  经检查,发现代码如下
public WYEng.Model.TQL_Part GetPaperPart(int taskId)
        ...{
            SqlParameter[] parm = new SqlParameter[1];
            parm[0] = new SqlParameter(PARM_TASKID, SqlDbType.Int);
            parm[0].Value = taskId;
            WYEng.Model.TQL_Part part = new WYEng.Model.TQL_Part();
 
            using (SqlDataReader rdr = XPWY.DBUtility.DBHelperSQL.ExecuteReader(SQL_SELECT_PART, parm))
            ...{
                    while (rdr.Read())
                    ...{
                        part.PartCode = rdr.GetString(0);
                        part.SetCode = rdr.GetString(1);
                        part.SubjectId = rdr.GetInt32(2);
                        part.DisplayOrder = rdr.GetInt32(3);
                        part.Description = rdr.GetString(4);
                    }
            }
            return part;
        }

 用YEng.Model.TQL_Part part = new WYEng.Model.TQL_Part();实例化一个对象以后,如果rdr里面没有任何行,part的值也不为null,所以修改代码如下:
 public WYEng.Model.TQL_Part GetPaperPart(int taskId)
        ...{
            SqlParameter[] parm = new SqlParameter[1];
            parm[0] = new SqlParameter(PARM_TASKID, SqlDbType.Int);
            parm[0].Value = taskId;
            WYEng.Model.TQL_Part part = new WYEng.Model.TQL_Part();
 
            using (SqlDataReader rdr = XPWY.DBUtility.DBHelperSQL.ExecuteReader(SQL_SELECT_PART, parm))
            ...{
                if (!rdr.HasRows)
                ...{
                    part = null;
                }
                else
                ...{
                    while (rdr.Read())
                    ...{
                        part.PartCode = rdr.GetString(0);
                        part.SetCode = rdr.GetString(1);
                        part.SubjectId = rdr.GetInt32(2);
                        part.DisplayOrder = rdr.GetInt32(3);
                        part.Description = rdr.GetString(4);
                    }
                }
            }
            return part;
        }

  运行Nunit后,状态为绿色,其他的类似问题也进行了相应的修正。
  我正在研究Nunit单元测试,有不当的地方希望大家能指正,谢谢。

22/2<12
价值129的会员专享直播免费赠送,添加微信领取听课名额哦~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号