代码重构与单元测试——测试项目(二)
二、创建测试项目
我们已经创建了充电宝计费项目,做为我们这次重构的遗留系统,为了验证我们每次重构的正确性,我们需要一个测试项目,对我们重构的代码进行测试。接下来我们来创建这个测试项目。
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);
}
}
}
相关文章
- 忙活了一年的开源社区,终于赶上了春节前的末班车!
- ChatGPT 会开源吗?
- 7 款殿堂级的开源 CMS(内容管理系统)
- 请收下这 10 个安全相关的开源项目
- MySQL 5.7 升级到 8.0
- 越折腾越好用的 3 款开源 APP
- 10 款更先进的开源命令行工具
- 对开源框架跃跃欲试,却在写的时候犯了难?
- 一大波开源小抄来袭
- 物联网?快来看 Arduino 上云啦
- 想做钢铁侠?听说很多大佬都是用它入门的
- 写给小白的开源编译器
- 支持中文!秒建 wiki 知识库的开源项目,构建私人知识网络
- 一款开源的文件搜索神器,终于不用记 find 命令了
- 用一个文件,实现迷你 Web 框架
- 一个文件的开源项目,开启你的开源之旅
- 3.6 万颗星!开源 Web 服务器后起之秀,自带免费 HTTPS 开箱即用
- 狠人!标星 3.4 万的项目说删就删,几行代码搞崩数万个开源项目
- 那些年的开源项目,你跑起来了吗?
- 重玩 40 年前的经典游戏小蜜蜂,这次通关了源码