Unit断言学习
[TestMethod]—用于把一个方法标记为一个测试方法。当你运行你的测试时,仅标记有这个属性的方法才能够运行。 [TestClass]—用于把一个类标记为一个测试类。当你运行你的测试时,仅标记有这个属性的类才能够运行。 当构建测试时,你总是使用[TestMethod]和[TestClass]属性。然而,还存在其它若干有用的(但是可选的)测试属性。例如,你可以使用下列属性对来建立和简化你的测试: [AssemblyInitialize]和[AssemblyCleanup]—分别用于标记那些在一个程序集中的所有测试执行之前或之后要执行的方法 [ClassInitialize]和[ClassCleanup]—分别用于标记那些在一个类中的所有测试执行之前或之后要执行的方法 [TestInitialize]和[TestCleanup]—分别用于标记那些在一个特定的测试方法之前或之后要执行的方法 例如,你可能想创建一个虚构的HttpContext并使之应用于你所有的测试方法中。此时,你可以在一个标记有[ClassInitialize]属性的方法中建立该虚构的HttpContext,然后在一个标记有[ClassCleanup]属性的方法中释放此虚构的HttpContext。 此外,还存在若干属性你可以用于提供关于测试方法的额外信息。当你操作成百上千的单元测试时,你需要通过排序和过滤等方法来管理这些测试。此时,下面这些属性就变得相当有用: [Owner]—指定一个测试方法的作者 [Description]—提供一个测试方法的描述 [Priority]—能够使你为一个测试指定一个整数优先权 [TestProperty]—指定一个随意的测试属性 你可以在测试视图窗口或测试列表编辑器中使用这些属性来排序和过滤测试。 最后,还存在一个属性可以支持你当运行一个测试时忽略一个特定的测试方法。当你的一个测试出现问题并且你目前还不想处理该问题时,这个属性就变得相当有用的: ? [Ignore]—支持你临时性地禁用一个特定的测试。你可以把这个属性应用于一个测试方法或一个测试类之上。
Nunit一共有四个类断言类,分别是Assert、StringAssert、FileAssert和DirectoryAssert,它们都在NUnit.Framework命名空间,其中Assert是常用,也是我们最熟悉的,而另外三个断言类,顾名思义,分别对应于字符串的断言、文件的断言和目录的断言,理论上,仅Assert类就可以完成所有条件的判断,然而,如果合理的运用后面的三个断言,将使代码更加简洁、美观,也更加便于理解和维护。
Assert类:
1、AreEqual/AreNotEqual 相等不相等
2、AreSame/AreNotSame类判断
3、Contains判断一个对象是否存在于某对象(集合)
4、一系列条件判断:
IsTrue:判断条件为真
True:同上
IsFalse:判断条件为假
False:同上
IsNull:判断是否为空
Null:同上
IsNotNull:判断不为空间
NotNull:同上
IsNaN:判断数值是Nan
IsEmpty/IsNotEmpty:判断字符串是否为空/不为空
IsEmpty/IsNotEmpty:判断集合是否为空/不为空
5、比较大小
Greater:大于
GreaterOrEqual:大于等于
Less:小于
LessOrEqual:小于大于
6、IsInstanceOfType/ IsNotInstanceOfType是不是某一个类的实例
7、这几个比较有用,比如在调用被测试代码时,如果抛出异常,调用Fail()方法,则在失败的统计里,+1
Pass:强行让测试通过
Fail:强行让测试失败
Ignore:忽略该测试方法
Inconclusive:未验证该测试
CollectionAssert类
AllItemsAreInstancesOfType:集合中的各项是否是某某类型的实例
AllItemsAreNotNull:集合中的各项均不为空
AllItemsAreUnique:集合中的各项唯一
AreEqual:两个集合相等
AreEquivalent:两个集合相当
AreNotEqual:两个集合不相等
AreNotEquivalent:两个集合不相当
DoesNotContain:集合中不包含某对象
IsSubsetOf:一个集合是另外一个集合的子集
IsNotSubsetOf:一个集合不是另外一个集合的子集
IsEmpty:集合为空
IsNotEmpty:集合不为空
IsOrdered:集合的各项已经排序
特性:
[TestFixture]/[Explicit]:声明一个类是测试类/声明一个类只有在UI界面被选中时才执行
[TestFixtureSetup]/[TestFixtureTearDown]:在测试开始前/结束后要执行的操作,一个TestFixture只能有一个TestFixtureSetup或TestFixtureTearDown。
[Test]/[Ignore]:是测试方法/忽略掉,测试时不执行
[Setup]/[TearDown]:每个测试方法在执行前/结束后要执行的操作
方法名(([Values(1, 2, 3)] int x)
[Range]:生成某个数据范围内的子测试,如
TestPrintColsole([Range(0.2, 0.6, 0.2)] double d):生成0.2,0.4,0.6三个子测试用例
TestPrintColsole([Values(1, 2, 3, 4, 5, 6)] int x, [Range(0.2, 0.6, 0.2)] double d):两个Attribuee结合,共生成18个子测试用例
[Random]:在某个范围内随机生成测试用例,
TestPrintColsole([Random(-1.0, 1.0, 5)] double d):-1到1之间生成5个测试用例
TestPrintColsole([Values(1, 2, 3, 4, 5, 6)] int x, [Random(-1.0, 1.0, 5)] double d) :共生成30个子测试用例
- 设计模式之装饰模式
- Android网络编程(六)OkHttp3用法全解析
- Android网络编程(五)OkHttp用法全解析
- Android网络编程(一)HTTP协议原理
- Spring Cloud实战小贴士:Zuul统一异常处理(二)
- Android View体系(九)自定义View
- Android网络编程(二)HttpClient与HttpURLConnection
- Spring Batch入门篇
- Android网络编程(三)Volley用法全解析
- Android网络编程(八)源码解析OkHttp中篇[复用连接池]
- Mybatis SqlSessionTemplate 源码解析
- MapperScannerConfigurer处理过程源码分析
- Spring Boot中使用Actuator的/info端点输出Git版本信息
- Spring Batch:文件的批量读写Flatfile(XML,CSV,TXT)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 线程(三)生产者消费者模型+POSIX信号量
- 线程(四)线程池的实现+线程的单例模式
- 一文搞懂网络套接字编程
- 网络原理(二)——应用层
- 13年毕业,用两年时间从外包走进互联网大厂!
- 网络原理(三)——一文了解传输层UDP/TCP协议
- Spring Cloud Gateway结合注册中心使用路由失败?那就自己定制路由功能呗
- 动态内存管理
- list类
- 一文了解STL容器deque类
- 如何让SpringMVC框架使用我们封装的JsonUtils实现消息的序列化和反序列化
- 一文了解stack和queue类的实现
- 继承
- 什么是多态?如何实现?只看这一篇就够了
- 【DB笔试面试865】序列cache值过小导致CPU利用率过高