代码重构与单元测试——测试项目(二)
二、创建测试项目
我们已经创建了充电宝计费项目,做为我们这次重构的遗留系统,为了验证我们每次重构的正确性,我们需要一个测试项目,对我们重构的代码进行测试。接下来我们来创建这个测试项目。
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的菜单栏上选择“测试—》运行所有测试”。如下图。
![](https://img2020.cnblogs.com/blog/10343/202107/10343-20210706154110460-1405660083.png)
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);
}
}
}
相关文章
- asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
- asp.net mvc 之旅—— 第一站 从简单的razor入手
- Sql Server之旅——终点站 nolock引发的三级事件的一些思考
- Sql Server之旅——第十四站 深入的探讨锁机制
- Sql Server之旅——第十三站 对锁的初步认识
- Sql Server之旅——第十二站 sqltext的参数化处理
- Sql Server之旅——第十一站 简单说说sqlserver的执行计划
- Sql Server之旅——第十站 看看DML操作对索引的影响
- Sql Server之旅——第九站 看公司这些DBA们设计的这些复合索引
- Sql Server之旅——第八站 复合索引和include索引到底有多大区别?
- Sql Server之旅——第七站 为什么都说状态少的字段不能建索引
- Sql Server之旅——第六站 使用winHex利器加深理解数据页
- Sql Server之旅——第五站 确实不得不说的DBCC命令(文后附年会福利)
- Sql Server之旅——第四站 你必须知道的非聚集索引扫描
- Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
- Sql Server之旅——第二站 理解万恶的表扫描
- Sql Server之旅——第一站 那些给我们带来福利的系统视图
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
- 看看C# 6.0中那些语法糖都干了些什么(中篇)
- 看看C# 6.0中那些语法糖都干了些什么(上篇)