测试框架unit之assertion断言使用详解
NUnit是.Net平台的测试框架,广泛用于.Net平台的单元测试和回归测试中,下面我们用示例详细学习一下他的使用方法
任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit、phpUnit、pythonUnit)相比,由于大量使用了Generic、Attribute等语言特征,NUnit提供了更为方面、灵活的测试方法,下面先介绍一下断言。
Nunit一共有四个类断言类,分别是Assert、StringAssert、FileAssert和DirectoryAssert,它们都在NUnit.Framework命名空间,其中Assert是常用,也是我们最熟悉的,而另外三个断言类,顾名思义,分别对应于字符串的断言、文件的断言和目录的断言,理论上,仅Assert类就可以完成所有条件的判断,然而,如果合理的运用后面的三个断言,将使代码更加简洁、美观,也更加便于理解和维护。
一:Assert类
对于我们通常的单元测试代码,Assert类中的静态方法就可以完成,其中大家最熟悉的应该是Assert. AreEqual()方法,其实,除了AreEqual,NUnit还提供了众多的比较方式,满足不同的代码要求。
- 1:相等/不相等判断
AreEqual:判断两个值相等
AreNotEqual:判断两个值不相等
示例:
Int a=1
Assert.AreEqual(a,1);//通过判断
Assert.AreEqual(a,2);//不能通过判断
注意,除了AreEqual/ AreNotEqual,下面几乎所有的方法都支持多态(多种数据类型),以及多参数,除了经常使用的Assert .AreEqual(int a,int b),还有一种典型的参数形式:
Assert.AreEqual(int a,int b,string message);
或者 Assert.XXX(int a,int b,string message);
其中第三个参数是条件不通过时输出的信息,以便于错误的定位
对于double和decimal类型,这两个方法还支持比较时的浮点误差
例如以下代码:
double a = 1.1;
double b = 1.11;
double c = 0.1;
Assert.AreEqual(a, b, c);//通过判断
c=0.01;
Assert.AreEqual(a, b, c);//不能通过判断
- 2:类的判断
AreSame:判断两个对象相等
AreNotSame:判断两个对象不相等
Contains:判断是否是否某对象
示例:
List<string> list = new List<string>();
list.Add("a");
list.Add("b");
Assert.Contains("a", list); //通过判断
Assert.Contains("aa", list); //不能通过判断
- 3:条件判断
IsTrue:判断条件为真
True:同上
IsFalse:判断条件为假
False:同上
IsNull:判断是否为空
Null:同上
IsNotNull:判断不为空间
NotNull:同上
IsNaN:判断数值是Nan
IsEmpty/IsNotEmpty:判断字符串是否为空/不为空
IsEmpty/IsNotEmpty:判断集合是否为空/不为空
示例:
int a=100;
Assert. IsTrue(a==100);//通过判断
Assert. True(a==100);//通过判断
- 4:比较判断
Greater:大于
GreaterOrEqual:大于等于
Less:小于
LessOrEqual:小于大于
示例:
int a = 100;
Assert.Greater(a, 99);
Assert.GreaterOrEqual(a, 100);
- 5:类型判断
IsInstanceOfType/ IsNotInstanceOfType:是/不是某个类的实例(从2.5之后支持泛型)
例如:
public class Person
{
public string name {set;get;}
}
Person p = new Person();
p.name = "a";
Assert.IsInstanceOf(typeof(Person), p);//通过判断
Assert.IsInstanceOf(typeof(System.String), p);//不能通过判断
- 6:异常判断
Throws:应该抛出某类型的异常
DoesNotThrow:不应该抛出某类型的异常
- 7:其它常用的方法
Pass:强行让测试通过
Fail:强行让测试失败
Ignore:忽略该测试方法
Inconclusive:未验证该测试
二:StringAssert类
StringAssert用于String类型的断言判断:
StringAssert.Contains:是否包含子串
StringAssert.StartsWith:是否以某子串开头
StringAssert.EndsWith:是否以某子串结尾
StringAssert.AreEqualIgnoringCase:两个字符串是否在不区分大小写时相等
StringAssert.IsMatch:是否匹配,(使用正则表达式进行字符串比较)
示例:
string s1 = "abc";
StringAssert.Contains("b", s1);
StringAssert.StartsWith("a", s1);
StringAssert.EndsWith("c", s1);
string s2 = "aBc";
StringAssert.AreEqualIgnoringCase(s1, s2);
StringAssert.IsMatch("[a|book]", "123");
三:CollectionAssert类
AllItemsAreInstancesOfType:集合中的各项是否是某某类型的实例
AllItemsAreNotNull:集合中的各项均不为空
AllItemsAreUnique:集合中的各项唯一
AreEqual:两个集合相等
AreEquivalent:两个集合相当
AreNotEqual:两个集合不相等
AreNotEquivalent:两个集合不相当
DoesNotContain:集合中不包含某对象
IsSubsetOf:一个集合是另外一个集合的子集
IsNotSubsetOf:一个集合不是另外一个集合的子集
IsEmpty:集合为空
IsNotEmpty:集合不为空
IsOrdered:集合的各项已经排序
示例:
List<int> a = new List<int>();
List<int> b = new List<int>();
CollectionAssert.IsEmpty(a);
for (int i = 1; i <= 10; i++)
{
a.Add(i);
b.Add(i);
}
CollectionAssert.AreEqual(a, b);
CollectionAssert.IsOrdered(a);
b.Remove(1);
CollectionAssert.IsSubsetOf(b, a);
CollectionAssert.AreEqual(a, b);
测试框架unit之assertion断言使用详解的更多相关文章
- 测试框架nunit之assertion断言使用详解
任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit.phpUnit.pythonUnit)相比,由于大量使用了Generic.Attribute等语言 ...
- 【山外笔记-工具框架】iperf3网络性能测试工具详解教程
[山外笔记-工具框架]iperf3网络性能测试工具详解教程 本文下载链接 [学习笔记]iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性 ...
- 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...
- Farseer.net轻量级开源框架 入门篇:添加数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 分类逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 ...
- Farseer.net轻量级开源框架 入门篇:修改数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ...
- Farseer.net轻量级开源框架 入门篇:删除数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 ...
- Farseer.net轻量级开源框架 入门篇:查询数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 下一篇:Farseer.net轻量级开源框架 中级篇: Where条 ...
- NUnit的Attribute使用详解
NUNIT使用详解(一) 2008/08/26 11:40 NUnit是一个单元测试框架,专门针对于.NET来写的,它是是xUnit的一员.NUnit完全由C#语言来编写,并且编写时充分利用了许多.N ...
- 第一节:框架前期准备篇之Log4Net日志详解
一. Log4Net简介 Log4net是从Java中的Log4j迁移过来的一个.Net版的开源日志框架,它的功能很强大,可以将日志分为不同的等级,以不同的格式输出到不同的存储介质中,比如:数据库.t ...
随机推荐
- Luogu P4553 80人环游世界
link 题目大意 自东向西有 \(n\) 个国家.有 \(m\) 个人,他们可以选择 \(n\) 个国家中任意一个开始,任意一个结束,但路线必须自东向西,且第 \(i\) 个国家必须恰好经过 \(v ...
- Java程序设计当堂测试 9.20
/*Java当堂测试 ATM机模拟系统由于学习的知识有限,不能完成所有课上项目,文件的应用没有完成,汇款转账功能也没有写,一些要求该退出的地方也没有写,基本功能还算完善*/ 1 package acc ...
- 入门 - SpringBoot 2.x 使用 JWT
JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法 一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外 ...
- canvas实现任意正多边形的移动(点、线、面)
前言 我在上一篇文章简单实现了在canvas中移动矩形(点线面),不清楚的小伙伴请看我这篇文章:用canvas 实现矩形的移动(点.线.面)(1). ok,废话不多说,直接进入文章主题, 上一篇文章我 ...
- Eclipse配置反编译插件jadclipse
参考自:https://blog.csdn.net/moneyshi/article/details/79715891 Jad是一个Java的一个反编译工具,是用命令行执行,和通常JDK自带的java ...
- Appium和Python实现蚂蚁森林自动化收取能量
准备环境 Window10系统 Appium1.21.0 AndroidSDK r24.1.1 Python3.7.5 支付宝apk文件 查看支付宝apk包信息 使用android sdk aapt命 ...
- odoo里API解读
Odoo自带的api装饰器主要有:model,multi,one,constrains,depends,onchange,returns 七个装饰器. multimulti则指self是多个记录的合集 ...
- Python自动化测试面试题-经验篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- 第一篇 -- 下载并安装IDEA
此篇讲的是安装IDEA企业版,社区版是免费的,就不多说了. 参考链接:https://www.exception.site/essay/how-to-free-use-intellij-idea-20 ...
- js学习笔记之公告逐行显示
$(function(){ var newsListHeight = $(".news-list").height(); //获得内容的高度 var newsConHeight = ...