代码重构与单元测试——测试项目(二)

2023-11-10

二、创建测试项目

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

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);
        }
    }
}

复制代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码重构与单元测试——测试项目(二) 的相关文章

  • git提交代码完整目录(详细)

    1 找到需要提交的git代码 2 初始化 git init 3 查询状态 git status 4 添加代码 git add test txt test txt是需要提交的文件 git add all 提交所有 5 git文件commit仓

随机推荐

  • DKVMN知识追踪描述

    由于在线学习课程的兴起 学习者在课程学习过程中有很多习题练习的记录 利用这些记录 知识追踪 Knowledge Tracing 希望通过对学习者过往练习的结果分析其当前对一些概念的掌握程度 知识追踪任务可以形式化为一个有监督的序列学习问题
  • eclipse + armgcc + pyocd(CMSIS-DAP) 进行嵌入式MCU Debug

    eclipse armgcc pyocd CMSIS DAP 进行嵌入式MCU Debug 由于中美贸易战的影响 备用方案将采用国产MCU 经过乱开发委员会的评估 认为华大 HDSC 的MCU性价比不错 但是keil官网找不到所选芯片的pd
  • Java thread中对异常的处理策略

    https www cnblogs com googlemeoften p 5769216 html
  • Flutter开发之滚动Widget

    移动端数据量比较大时 我们都是通过列表来进行展示的 比如商品数据 聊天列表 通信录 朋友圈等 在Android中 我们可以使用ListView或RecyclerView来实现 在iOS中 我们可以通过UITableView来实现 在Flut
  • sql中对日期的筛选

    转载自 点击打开链接 几个小时内的数据 DATE SUB NOW INTERVAL 5 HOUR 今天 select from 表名 where to days 时间字段名 to days now 昨天 SELECT FROM 表名 WHE
  • Flutter —— dart基础语法

    Flutter dart基础语法 1 Flutter 项目创建 2 Dart 语法 2 1 var final和const 2 2 num 2 3 string 2 4 list 和 map 2 5 和 2 6 方法 和 箭头函数 2 7
  • 刚面完的字节跳动Python软件测试用例编写(含思路)

    测试用例编写是软件测试的基本技能 也有很多人认为测试用例是软件测试的核心 软件测试中最重要的是设计和生成有效的测试用例 测试用例是测试工作的指导 是软件测试的必须遵守的准则 在这里我们不讨论以上的各种观点 但是综上所述 大家可以看出 测试用
  • QT中的connect用法总结

    第一种 首先来看看老版本的 connect 写法 比较复杂些 需要将信号和槽进行明确的指定 包括形参 看一个示例 为方便演示 先自定义一个 Button 然后定义两个重载的信号 lass MyButton public QWidget Q
  • 仓库 “https://download.docker.com/linux ubuntu Release” 没有 Release 文件。N: 无法安全地用该源进行更新,所以默认禁用该源

    解决 E 仓库 https download docker com linux ubuntu Release 没有 Release 文件 N 无法安全地用该源进行更新 所以默认禁用该源 在ubuntu16 04上安装Docker Engin
  • CentOS 7 修改系统运行级别(单用户/正常启动)

    常用的系统运行级别 3级 带网络多用户命令行界面 multi user target 5级 带网络多用户图像化界面 graphical target 正常启动的系统使用systemctl命令修改运行级别 查看当前运行级别 systemctl
  • [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索 Eastmount 关键字及截图的功能 而这篇文章主要简单介绍如何实现自动登录163邮箱 同时继续介绍Selenium Python官网Locating
  • MySQL中的事务

    1 事务介绍 本篇文章我们来介绍数据库中事务的概念以及如何使用MySQL命令行窗口来进行数据库的事务操作 事务是联合操作中我们数据库稳定运作和数据不发生不可预知错误的重要依赖 事务是指数据库中的一组逻辑操作 这个操作的特点就是在该组逻辑中
  • STM32-时钟系统

    1 时钟的定义 时钟是单片机运行的基础 时钟信号推动单片机内各个部分执行相应的指令 时钟系统就是CPU的脉搏 决定cpu速率 像人的心跳一样 只有有了心跳 人才能做其他的事情 而单片机有了时钟 才能够运行执行指令 才能够做其他的处理 点灯
  • 数学建模——BP神经网络学习笔记

    一 BP神经网络简述 人工神经元概述 归纳一下生物神经元传递信息的过程 生物神经元是一个多输入 单输出单元 常用的人工神经元模型可用下图模拟 当神经元j有多个输入xi i 1 2 m 和单个输出yj时 输入和输出的关系可表示为 其中j为阈值
  • 5.4结构型模式—————装饰模式

    装饰模式的定义与特点 装饰 Decorator 模式的定义 指在不改变现有对象结构的情况下 动态地给该对象增加一些职责 即增加其额外功能 的模式 它属于对象结构型模式 装饰 Decorator 模式的主要优点有 采用装饰模式扩展对象的功能比
  • flash读写 STM32G070 HAL库 STM32CubeMX

    flash读写 STM32G070 HAL库 STM32CubeMX 1 程序通过串口写入及读写数据 通过printf打印输出 注 这里不讲解printf 的设置 2 写入数据代码 HAL StatusTypeDef flash write
  • Mybatis————Gitee中检出项目到myeclipse

    1 在gitee中新建仓库 2 在myeclipse中 import git 输入 创建好的 仓库的地址 就是上图中的 克隆 下载 那个地方的地址 然后输入 gitee的用户名密码 点击next 找到你本地的路径 next 导入一个新的ma
  • 高斯过程回归预测Matlab简单实现

    0 说在前面的话 如果是新手入门高斯过程回归的话建议先读这篇博客才能更好理解下面的程序哟 快速入门高斯过程回归预测 1 单点预测例题 主程序 clear close all 求解程序 x 1 5 1 0 75 0 4 0 25 0 输入测量
  • moviepy音视频开发:audio_normalize调整剪辑音量大小到正常

    前往老猿Python博文目录 概述 audio normalize函数用于将一个剪辑的音量大小调整到正常 调整的思路就是将剪辑中音频帧数据的最大值取出来 当其值小于1时 表示剪辑的音量偏小 以1为参考 将所有剪辑帧数据的值都乘以1和剪辑帧数
  • 代码重构与单元测试——测试项目(二)

    二 创建测试项目 我们已经创建了充电宝计费项目 做为我们这次重构的遗留系统 为了验证我们每次重构的正确性 我们需要一个测试项目 对我们重构的代码进行测试 接下来我们来创建这个测试项目 1 在Visual Studio 2019的 解决方案资