Unity 5.1断言库使用指南

Unity5.1引入了新的断言库,能够帮助开发者更高效地诊断游戏运行时错误。断言库不仅限于单元测试,在运行时也可以使用。它包括多种比较方法,如AreEqual和AreApproximatelyEqual等,适用于不同的场景。此外,该库还支持自定义比较器,可以集成到Unity测试工具中。
摘要由CSDN通过智能技术生成

**

http://tieba.baidu.com/p/4026914695

**
Unity 5.1为开发者带来了全新的断言库。本篇文章中,我们将为您阐述何为断言库(ASSERTION LIBRARY),以及您如何用它以提升游戏中运行错误的诊断效率。
断言是什么?为何要用它?
一个断言就是一种检查状态的方法,如果这个状态为True,那么执行就会继续下去。若有任何突发异常或期望状态没有出现,一条显示用户自定义的信息就会被印出在调用堆栈。让我们看如下这个范例:

  Assert.AreEqual(Selection.activeGameObject.name, "TTT", "not equal");

如果范例中的GameObject的名字不是TTT,那么一条错误提醒就会显示在调用栈并印出信息:not equal

如很多开发者所知,断言源于单元测试。在单元测试中采用“ Arrange-Act-Assert“来对比所期待的结果和真实结果是测试的最后一个环节,断言不仅仅是测试,你还可以利用它检测在运行过程中不变量被修改时获得警示。但是,并不是所有的断言只能被运用在运行(Runtime)代码中。
单元测试框架中的断言库是适用的吗?
极有可能您是首次在单元测试框架中遇到断言。举例:让我们试试NUnit,NUnit是一个用于断言测试有着非常丰富并已用于大量实践的库。那么,问题来了,为什么你仅仅想要利用这个库去测试你的产品代码呢?
NUnit断言允许你去测试许多东西。从最简单的对比状态测试到复杂的搜集测试传递异常。但是问题是运行花费时间很长。低阶的断言需要尽可能的精简,不花费额外的耗费。断言库就是用来帮助您减少额外的耗费和不必要的运行。
一个断言库最好能从发布包外调用。因为断言在产品发布周期对开发者很有用处,但是结束之后断言库对于用户毫无意义。当你在打包最终版本时你会想要去除所有的断言调用。你可能会采取注释所有的代码,但是这实在不是一个聪明的办法。还好,.NET有一个条件编译机制。断言库只会在符合条件玩家使用的开发包里调用断言。但是,仍有可能包含被编译选项采用的断言。
最后但也是很重要的,通常单元测试的断言库是建立在异常的基础上的。一个异常出现在一次运行的失败时。显然,这针对运行阶段时的代码并不理想。断言库已经集成到Unity Log系统,错误发生时,一条消息就会被记录。断言库通用于所有的Unity支持平台。这就意味着即使在不支持异常反馈的AOT平台上也能运行断言。
那么,这个断言库里都包含了什么内容?
该库提供了多种不同类型的比对方法和一个对等比较器。以下举列一些断言方法:

AreEqual -一般比较器,用来最基础的对等比较。默认的对等比较器。

AreApproximatelyEqual - 近似比较器,它可以默许一些比较错误。常用来比较浮点数。

IsTrue - 快速简易的布尔变量检查。

所有的方法都收录在断言文档中:

http://docs.unity3d.com/ScriptReference/Assertions.Assert.html

最酷的是这个断言库的设计跳出固定思维,它与Unity测试工具是兼容的。无需任何额外的动作,任何被保护的调用代码集成测试,断言都是会失败的。
断言库的延伸性
当你想要获得一个新功能,最好的方法自然是扩展它。上文提到的AreEqual方法允许你传递一个你自己的特定类型比较器,这个比较器必须在 IEqualityComparer的界面上执行。
该库提供用于比较浮点数的 FloatComparer,它可以允许你去做一些相对误差的比较。这个比较器收录在AreApproximatellyEqual方法。
总结
使用断言库来找出代码里的Bug以及非预期的状态是很有效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值