做一个爱写测试的程序员

发表于:2013-7-01 11:00

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

 作者:James Li    来源:51Testing软件测试网采编

  自从掌握了单元测试的要领之后,经常写测试,做测试,也非常喜欢做单元测试。我的文章数据采集:完美下载淘宝Ip数据库 简单的程序节省60元人民币而不必购买数据库》中的代码,也是个测试方法,源代码在QQ群中公布过。

  现在把它公开给大家,分享这个Ip地址信息下载功能的测试代码:

[TestMethod]
public void IPLibraryTest()
 {
            string whole = "211.64.0-255.0-255";
            IPRange ipRange = new IPRange(whole);
            List<IPAddress> addresses = ipRange.GetAllIP() as List<IPAddress>;
            DataTable table = new DataTable("Ip");
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            string url = string.Empty, json = string.Empty;
            Parallel.ForEach(addresses, (address) =>
                {
                     url = string.Format("http://ip.taobao.com/service/getIpInfo.php?ip={0}", address.ToString());
                     json = string.Empty;
                    try
                    {
                        json = Convert.ToString(NetworkHelper.PostRequest(url));
                    }
                    catch (Exception)
                    {
                           
                    }
                    Object obj2 = serializer.DeserializeObject(json);
                    if (string.IsNullOrWhiteSpace(json)||obj2 == null)
                        return;

                    Dictionary<String, Object> dictionary = (Dictionary<String, Object>)obj2;

                    foreach (KeyValuePair<string, object> valuePair in dictionary)
                    {
                        if (valuePair.Value.GetType() == typeof (Dictionary<string, object>))
                        {
                            Dictionary<String, Object> subdictionary = valuePair.Value as Dictionary<String, Object>;
                            lock (table)
                            {
                                if (table.Columns.Count == 0)
                                {
                                    foreach (KeyValuePair<string, object> pair in subdictionary)
                                    {
                                        table.Columns.Add(pair.Key, typeof (string));
                                    }
                                }

                                DataRow row = table.NewRow();
                                foreach (KeyValuePair<string, object> pair in subdictionary)
                                {
                                    row[pair.Key] = pair.Value;
                                }
                                table.Rows.Add(row);
                            }
                        }
                    }
                });
 
            string databaseFile = @"H:\Development\Source\Test\Database\64IpLibrary.accdb";
            OleDbHelper accessHelper = new OleDbHelper(databaseFile);
            accessHelper.AppendData(table);
}

  程序中的不合理的地方,欢迎批评指正。

  三个工具的组合 Visual Studio + Resharper + Visual Source Safe,经过几年的积累,累积了大量的测试代码。

  Visual Studio内置的MSTest本身好用,NUnit也可以,这是测试的基础工具,再配合Reshaprer的测试管理器,在方法前面点一个小按钮,即可以调试或是运行的方式开始测试,相当方便。最后,累积的测试代码,直接提交到源代码管理工具中,备以后查验。

  我们开发中经常遇到这样的情景,有一个小方法不知道是否正确,需要测试一下。不需要复杂的用户输入的功能,可以开一个控制台程序,执行测试,如用户输入复杂,则需要开一个Windows Forms程序。测试完成后,把可用的功能代码拷贝走,剩下的测试程序通常会扔掉。在没有学会MSTest之前,我经常这么做。等到以后发现有问题时,再回来来找当初的测试情景和代码,传递的参数数据,已经无从得知。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号