当前位置: 首页 > news >正文

单元测试-例子

你的RP是由你的程序质量决定的。软件是由多⼈合作完成的,不同⼈员的⼯作相互有依赖关系。例如,⼀个⼈写的模块被其他⼈写的模块调⽤。软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解模块的变化。如何能让⾃⼰负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,⽽且模块的质量能得到稳定的、量化的保证?单元测试就是⼀个很有效的解决⽅案。

例⼦:许多应⽤程序中都会⽤到“⽤户”这⼀类型,⽤户的标识通常是⼀个邮件地址。对应的单元测试该怎么写?我们来练习⼀下。⾸先我们创建了⼀个C#的类库(Class Library),并写了如代码清单所示的代码:

代码清单 
namespace DemoUser
{
    public class User
    {
        public User(string userEmail)
        {
            m_email = userEmail;
        }
        //user email as user id

 private string m_email;  
    }    
}

好,图中,底部窗⼝标题为Create Unit Tests,右键选中User,出现“New Test Project”弹窗,这样就可以创建新的单元测试。

创建好单元测试后,注意到在Solution Explorer中出现了三个新的⽂件。

Class1Test.cs:Class1.cs对应的单元测试⽂件。DemoUser.vsmdi:测试管理⽂件。Localtestrun.testrunconfig:本地测试运⾏设置⽂件。如何管理设置⽂件呢?右键再选属性(Property)并不对,必须双击设置⽂件才能进⼊管理及设置界⾯。进⼊设置界⾯后,可以让单元测试产⽣“demouser.dll”的代码覆盖报告。注意在单元测试中,VSTS⾃动为你⽣成了测试的⾻架,但是你还是要⾃⼰做不少事情,最起码要把那些标注为//TODO的事情给做了(如代码清单2-2所⽰)。此时,单元测试还在使⽤Assert.In-conclusive,表明这是⼀个未经验证的(Inconclu-sive)单元测试。

代码清单 
/// <summary>
/// A test for User (string)
/// </summary>
[TestMethod()]
public void ConstructorTest()
{
    // TODO: Initialize to an appropriate
    // value    User target = new User(userEmail);
    string userEmail = null; 
    // TODO: Implement code to verify target
    Assert.Inconclusive("TODO: Implement code to verify target");

代码清单2-2
/// <summary>
/// A test for User (string)
/// </summary>
[TestMethod()]
public void ConstructorTest()
{
    // TODO: Initialize to an appropriate
    // value    User target = new User(userEmail);
    string userEmail = null; 
    // TODO: Implement code to verify target
    Assert.Inconclusive("TODO: Implement code to verify target");}

http://www.dtcms.com/a/499286.html

相关文章:

  • 网站顶部素材山西制作网站
  • PHP 高效 JSON 库 JsonMachine
  • 网站建设内部因素百度站长平台有哪些功能
  • Linux内核IPoIB驱动深度解析:在InfiniBand上跑IP网络的高性能之道
  • 275TOPS算力边缘计算盒子的价值洞察与市场定位---视程空间
  • 对话 MoonBit 张宏波:为 AI 重构编程语言
  • QGIS制图专题4:缓冲区分析与服务半径专题图制作
  • IP 资源会枯竭吗?IPv6 能解决代理市场的矛盾吗?
  • 物联网运维中的边缘计算任务调度优化策略
  • TensorFlow2 Python深度学习 - 循环神经网络(LSTM)示例
  • C++第二十三课:猜数字游戏等练习
  • 河南省建设厅网站中州杯企业网站推广怎么做
  • 【数论】最大公因数 (gcd) 与最小公倍数 (lcm)
  • rocky linux MariaDB安装过程
  • git的 Rebase
  • 第8篇 QT联合halcon12在vs2019搭建环境开发图像处理
  • 【小白笔记】最大交换 (Maximum Swap)问题
  • CentOS安装Node.js
  • 深入解析MCP:从基础配置到高级应用指南
  • 佛山网站建设服务wordpress 不能更换主题
  • Process Monitor 学习笔记(5.13):从 0 到 1 的排障剧本清单(可复用模板)
  • Fluent 重叠网格+UDF NACA0012翼型摆动气动仿真
  • 深圳网站建设 设计卓越迈wordpress一键采集文章
  • 理想汽车Java后台开发面试题及参考答案(下)
  • python|if判断语法对比
  • 全链路智能运维中的实时流处理架构与状态管理技术
  • 排序算法:详解快速排序
  • 安阳哪里做360网站科技感十足的网站
  • UV 紫外相机在半导体制造领域的应用
  • 突破亚微米光电子器件制造瓶颈!配体交换辅助打印技术实现全打印红外探测器