单元测试-例子

你的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");}

相关推荐
一只老丸5 分钟前
HOT100题打卡第36天——二分查找
数据结构·算法
洛克希德马丁11 分钟前
Qt 配置Webassemble环境
开发语言·qt·webassembly·emscripten·emsdk
武子康12 分钟前
Java-167 Neo4j CQL 实战:CREATE/MATCH 与关系建模速通 案例实测
java·开发语言·数据库·python·sql·nosql·neo4j
自由的好好干活14 分钟前
C#桌面框架与Qt对比及选型(国产操作系统开发视角)
开发语言·qt·c#
upward_tomato19 分钟前
python中模拟浏览器操作之playwright使用说明以及打包浏览器驱动问题
开发语言·python
陌路2022 分钟前
S19 哈希--6种哈希构造方法
算法·哈希算法
lsx20240623 分钟前
jEasyUI 合并单元格详解
开发语言
乌暮27 分钟前
JavaEE入门--计算机是怎么工作的
java·后端·java-ee
散峰而望28 分钟前
C++入门(算法) - 习题
开发语言·c++·算法·github
这张生成的图像能检测吗29 分钟前
(论文速读)Regor - 渐进式对应点再生实现鲁棒3D配准
人工智能·算法·计算机视觉·配准·3d点云