单元测试心得

今天分配到了一个任务,要求获取到指定年份和期数往前推几十期的期数和年份,比如,目前开奖年份是2017年期数是45期,要求获取最近50期的年份和期数。代码如下

        /// <summary>
        /// 往前推算期数和年份
        /// </summary>
        /// <param name="year">结束年份</param>
        /// <param name="qs">结束期数</param>
        /// <param name="total_qs">总期数</param>
        /// <returns></returns>
        public Dictionary<string,int> GetForwardYearAndQS(int year,int qs,int total_qs)
        {
            int start_year = year;
            int start_qs = 0;
            while(1 == 1)
            {
                //如果今年的期数减去总期数大于零,则跳出循环
                if(qs - total_qs >= 0)
                {
                    start_qs = qs - total_qs + 1; 
                    break;
                }
                else
                {
                    //如果不是,则用前几年的期数补上去
                    --start_year;
                    total_qs = (total_qs - qs);
                    qs = this.GetMaxQS(start_year);

                }
            }
            Dictionary<string, int> dict = new Dictionary<string, int>();
            dict["start_year"] = start_year;
            dict["start_qs"] = start_qs;
            return dict;
        }

这时就需要进行测试了,以前博主都是,把代码放到index页面的Page_Load方法中去的,可这样子既不正规,测试代码也不方便保存。于是就想起了用单元测试来试试看。

博主用的vs2015,在解决方案右击-添加-新建项目-单元测试项目,给测试项目起好名字后,右击测试项目-添加-新建项-单元测试,添加单元测试类,代码如下:

[TestClass]
    public class BLLTest
    {
        [TestMethod]
        public void TestMethod1()
        {
            BLL.zcp_lottery_record bll_record = new BLL.zcp_lottery_record();
            int end_year = 2017;
            int end_qs = 44;
            int total_qs = 46;
            Dictionary<string, int> expected = new Dictionary<string, int>();
            expected["start_year"] = 2016;
            expected["start_qs"] = 151;
            Dictionary<string, int> actual = bll_record.GetForwardYearAndQS(end_year, end_qs, total_qs);
            Assert.AreEqual(expected["start_year"], actual["start_year"]);
            Assert.AreEqual(expected["start_qs"], actual["start_qs"]);
        }
    }
注意,这里的expected是你希望得到的目标结果,actual是实际结果,需要比较是否相等。

可是运行时,总是在

bll_record.GetForwardYearAndQS(end_year, end_qs, total_qs);

的那一行报错,提示空指针异常,后来调试跟踪后发现是这里的问题:

public static string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
原来是因为单元项目中没有web.config文件,才导致了数据库连接字符串连不上去。于是我就把web项目中的web.config文件复制过来。可问题依旧存在,这就只好在网上寻求解决方法了,查了半天终于找到一个解决方法:在项目中新建app.config文件。这样就能读取到 数据库连接字符串了,因为web.config文件只能在web项目中读取,无法在测试项目中读取。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值