ASP.NET C# 添加单元测试

10 篇文章 0 订阅
1 篇文章 0 订阅

这是一个项目中用到的方法,不要在意方法的内容,方法是做什么的。

public class WineUrl
{
    /// <summary>
    /// 获取页面的url
    /// </summary>
    /// <param name="paraDic">参数字典</param>
    /// <param name="pgid">页码</param>
    /// <param name="zhanweifu">占位符键,该键的值是{0},目的是后面可以替换值</param>
    /// <returns></returns>
    public string GetPageUrl(Dictionary<string, string> paraDic, int pgid, string zhanweifu)
    {
        Dictionary<string, string> paraList = new Dictionary<string, string>(paraDic);
        if (!string.IsNullOrEmpty(zhanweifu))
        {
            if (paraList.ContainsKey(zhanweifu))
            {
                paraList[zhanweifu] = "{0}";
            }
            else
            {
                paraList.Add(zhanweifu, "{0}");
            }
        }
        string url = "/chanpin";
        //先判断类型和地区,这些需要拼接url
        if (paraList.ContainsKey("type"))
        {
            url += "/" + paraList["type"];
            if (paraList.ContainsKey("city"))
            {
                url += "_c_" + paraList["city"];
            }
        }
        else
        {
            if (paraList.ContainsKey("city"))
            {
                url += "/c_" + paraList["city"];
            }
        }
        if (pgid == 0)//pgid=0是占位符,翻页使用
        {
            url += "/p{0}/?";
        }
        else if (pgid == 1)//pgid=1表示第一页,可以不用显示
        {
            url += "/?";
        }
        else if (pgid > 1)//表示正常的翻页
        {
            url += "/p" + pgid + "/?";
        }
        //其他附加参数处理
        if (paraList.ContainsKey("title"))
        {
            url += "title=" + paraList["title"] + "&";
        }
        if (paraList.ContainsKey("time"))
        {
            url += "time=" + paraList["time"] + "&";
        }
        url = url.TrimEnd('?').TrimEnd('&');
        return url;
    }
}

创建测试项目

 

添加测试方法,actual 是实际运行的结果,excepted是你期望得到的结果。下面都是对上面的方法进行验证、测试的

[TestClass]
public class UnitTest1
{
    public WineUrl winurl= new WineUrl();
    [TestMethod]
    public void AnalysisUrl_type()
    {
        //WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("type", "yinliao");
        int pgid = 1;
        string zhanweifu = "";
        string actual = winurl.GetPageUrl(param, pgid, zhanweifu);
        string excepted = "/chanpin/yinliao/";
        Assert.AreEqual(excepted, actual, "地址解析错误");
    }
    [TestMethod]
    public void AnalysisUrl_city()
    {
        //WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("city", "henan");
        int pgid = 1;
        string zhanweifu = "";
        string actual = winurl.GetPageUrl(param, pgid, zhanweifu);
        string excepted = "/chanpin/c_henan/";
        Assert.AreEqual(excepted, actual, "地址解析错误");
    }
    [TestMethod]
    public void AnalysisUrl_city_time()
    {
        //WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("city","henan");
        param.Add("time", "10");
        int pgid = 1;
        string zhanweifu = "";
        string actual= winurl.GetPageUrl(param,pgid,zhanweifu);
        string excepted = "/chanpin/c_henan/?time=10";
        Assert.AreEqual(excepted, actual,"地址解析错误");
    }
    [TestMethod]
    public void AnalysisUrl_type_city_time()
    {
        //WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("type", "yinliao");
        param.Add("city", "henan");
        param.Add("time", "10");
        int pgid = 1;
        string zhanweifu = "";
        string actual = winurl.GetPageUrl(param, pgid, zhanweifu);
        string excepted = "/chanpin/yinliao_c_henan/?time=10";
        Assert.AreEqual(excepted, actual, "地址解析错误");
    }
    [TestMethod]
    public void AnalysisUrl_type_city_time_page()
    {
        //WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("type", "yinliao");
        param.Add("city", "henan");
        param.Add("time", "10");
        int pgid = 3;
        string zhanweifu = "";
        string actual = winurl.GetPageUrl(param, pgid, zhanweifu);
        string excepted = "/chanpin/yinliao_c_henan/p3/?time=10";
        Assert.AreEqual(excepted, actual, "地址解析错误");
    }
    [TestMethod]
    public void AnalysisUrl_type_city_time_page_title()
    {
       // WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("type", "yinliao");
        param.Add("city", "henan");
        param.Add("time", "10");
        param.Add("title", "酸梅汤");
        int pgid = 3;
        string zhanweifu = "";
        string actual = winurl.GetPageUrl(param, pgid, zhanweifu);
        string excepted = "/chanpin/yinliao_c_henan/p3/?title=酸梅汤&time=10";
        Assert.AreEqual(excepted, actual, "地址解析错误");
    }
    [TestMethod]
    public void AnalysisUrl_type_city_time_page_title_zhanwei()
    {
        //WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("type", "yinliao");
        param.Add("city", "henan");
        param.Add("time", "10");
        param.Add("title", "酸梅汤");
        int pgid = 3;
        string zhanweifu = "city";
        string actual = winurl.GetPageUrl(param, pgid, zhanweifu);
        string excepted = "/chanpin/yinliao_c_{0}/p3/?title=酸梅汤&time=10";
        Assert.AreEqual(excepted, actual, "地址解析错误");
    }
    [TestMethod]
    public void AnalysisUrl_type_city_time_page_title_zhanwei_2()
    {
        //WineUrl winurl = new WineUrl();
        Dictionary<string, string> param = new Dictionary<string, string>();
        param.Add("type", "yinliao");
        param.Add("city", "henan");
        param.Add("time", "10");
        param.Add("title", "酸梅汤");
        int pgid = 0;
        string zhanweifu = "";
        string actual = winurl.GetPageUrl(param, pgid, zhanweifu);
        string excepted = "/chanpin/yinliao_c_henan/p{0}/?title=酸梅汤&time=10";
        Assert.AreEqual(excepted, actual, "地址解析错误");
    }
}

运行单元测试

运行结果,全部测试成功

把第一个方法的期望结果改成错误的,会有提示

此处还可以分析测试代码的覆盖率

 

 

 

已覆盖95.92%的代码,还有4.08%的代码没有被覆盖。下面是没有测试到的代码,因此需要进一步完善测试方法。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值