欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

代码重构与单元测试(一)

程序员文章站 2022-03-03 17:01:33
我们已经创建了充电宝计费项目,做为我们这次重构的遗留系统,为了验证我们每次重构的正确性,我们需要一个测试项目,对我们重构的代码进行测试。接下来我们来创建这个测试项目。遗留系统,程序员们为了快速完成需求和上线而写出了最基本的代码,而在功能的不断扩充过程中,以打补丁的方式对代码进行扩充,中间还会面临着开... ......
代码重构与单元测试(一)
 

二、创建测试项目

     我们已经创建了充电宝计费项目,做为我们这次重构的遗留系统,为了验证我们每次重构的正确性,我们需要一个测试项目,对我们重构的代码进行测试。接下来我们来创建这个测试项目。

1.在visual studio 2019的“解决方案资源管理器”中,使用鼠标右键,单击解决方案名称,在弹出菜单中选择“添加—》新建项目”。如下图。

 代码重构与单元测试(一)

2.在“添加新项目”界面中,选择”c#”、“windows”、“测试”,此时会出现多个项目模板。选择“单元测试项目”模板(.net core),然后点击“下一步”按钮。如下图。 代码重构与单元测试(一)

 3.在“配置新项目”界面中,填写“项目名称”为leasepowerbanktest,在“位置”中输入你的目录名称。然后点击“下一步”按钮。如下图。

 代码重构与单元测试(一)

 

4.在“其他信息”界面中选择“目标框架”下拉框中选择“net50”,然后点击“创建”按钮。如下图。 代码重构与单元测试(一)

 5.在对上面充电宝计费项目进行测试之前,我们必须先引用充电宝项目。在解决方案资源管理器中,选中leasepowerbanktest项目,使用鼠标右键单击“依赖项”,在弹出菜单中使用鼠标左键单击“添加项目引用”,在弹出“引用管理器”对话框中选择“leasepowerbank”项目,然后点击“确定”按钮。如下图。

 代码重构与单元测试(一)

6.在对上面充电宝计费项目代码重构之前,我们还必须要有上述代码的测试用例。因为在每次重构之前,我们修改的是代码的内部结构,而代码模块对外的调用方式不会变的。所以我们所创建的测试用例可以帮助验证我们重构后的程序是否可以正常的工作,是否重构后还符合我们的需求。下方就是我们创建的测试用例。

using leasepowerbank;
using microsoft.visualstudio.testtools.unittesting; 

namespace leasepowerbanktest
{

    [testclass]
    public class unittest1
    {

        [testmethod]
        public void customerstatementtest()

        {

            //创建用户
            var customer =new  customer ( "张三");

            //创建充电宝
            powerbank regularpowerbank = new powerbank("低-充电宝", powerbank.lowtraffic);

 

            //创建租赁数据
            var rental1 = new rental(regularpowerbank, 5);
            customer.listrentals.add(rental1);         

            string result = customer.statement();
            system.console.writeline(result);
        }
    }
}

7.在visual studio 2019的菜单栏上选择“测试—》运行所有测试”。如下图。
代码重构与单元测试(一)

8.针对上述案例,上面测试用例的输出结果如下。在每次重构后,我们都会执行上述测试代码,然后观察结果是否与之前的相同。    结果如下图。

 代码重构与单元测试(一)

9. 我们创建一个新的测试用例,用以帮助我们验证一下高人流量地段的计费是否正确。下方就是我们创建的测试用例customerhightest类的代码和测试结果。如下图。

using leasepowerbank;
using microsoft.visualstudio.testtools.unittesting;

 namespace leasepowerbanktest
{

    [testclass]
    public class customerhightest
    {

        [testmethod]
        public void customerstatementtest()
        {

            //创建用户
            var customer = new customer("王五");

            //创建充电宝
            powerbank regularpowerbank = new powerbank("高-充电宝", powerbank.hightraffic);

 
            //创建租赁数据
            var rental1 = new rental(regularpowerbank, 5);


            customer.listrentals.add(rental1);

            string result = customer.statement();

            system.console.writeline(result);
        }
    }
}

代码重构与单元测试(一)