[Unity] Unity中的单元测试和错误追踪

本文将由Unity大中华区企业支持经理高川,为大家分享Unity自带的单元测试及性能报告工具。

在游戏开发过程中,Bug的出现是无法避免的。解决Bug的重要前提是及时发现Bug,准确定位Bug。Unity提供了两个优秀的工具来帮助大家完成“杀虫”工作。

Unity Editor Test Runner

在开发过程中,一个Bug被发现的越早,其修复的可能性越高,而修复成本则越低。为了尽早发现问题,避免Bug积累重叠,单元测试就显得尤为重要。

单元测试可以针对特定功能模块进行持续的检测,帮助开发人员尽早发现问题,及时修正。在Unity编辑器中集成了单元测试模块。该模块源自著名的开源工程NUnit,与Unity引擎结合后,可以方便的完成日常开发中的单元测试功能。下面来介绍一下如何使用这个功能。

首先要建立测试用例。测试用例的脚本需要放到Editor 目录下:


在测试用例脚本中引入名字空间NUnit.Framework:


测试用例函数需要一个[Test]属性来标识:


测试用例函数中通过Assert类下面的一系列函数,进行断言测试:


一个测试用例中可以有多个断言,只有所有断言都通过检测,才会认为一个测试用例通过了检测。

写好全部测试用例后,打开Unity Editor的Windows->Editor Tests Runner,在Editor Tests窗口中我们可以看到测试工具按钮和刚刚写的一系列测试用例:


上面一栏中包含按钮:Run All,Run Selected和Run Failed

- Run All:运行全部测试用例

- Run Selected:运行当前选择的测试用例

- Rerun Failed:重新运行全部失败的测试用例

右侧的四个图标则分别表示:

 - 成功的测试用例数

        - 失败的测试用例数

        - 被忽略的测试用例数

        - 尚未运行过的测试用例数

下方的树状结构表示具体测试用例当前的状态。

同时Editor Tests提供headless的运行模式,可以很好的与CI&CD等自动化流水线配合。

Game Performance Reporting

Unity提供的另外一个工具是Game Performance Reporting(GPR)性能报告。这是一个用来做运行时错误追踪的系统。目前市面上也有很多运行时错误追踪系统,但很多在和Unity引擎结合使用中效果并不理想。主要表现在,追踪到的代码可读性差,错误追踪不准确,定位错误等等。结果造成了开发者看到很多错误报告上来,然而并不能解决的尴尬局面。做为Unity原生解决方案,Game Performance Reporting性能报告系统完美解决了这个问题。下面来简单介绍一下这个系统。

首先改系统整合简单。Game Performance Reporting性能报告继承了Unity一贯的使用简单的风格,在Unity5.4之前的Unity版本(目前仅支持Unity5.x系统),开发者需要去Unity官网下载一个UnityPackage并导入工程。然后在游戏启动时的某个脚本上加上一句代码:

CrashReporting.Init("<Project Id>");

其中Project ID是在Unity官网上生成的唯一ID。

在Unity5.4版本中,Game Performance Reporting系统直接被整合到了编辑器中。开发者只需要在Services窗口中将Performance Reporting的开关打开即可:


当游戏在运行时(测试期或者上线后)出现异常的时候,通过登录Unity开发者页面的Unity Online Services 就可以查看到异常的信息。

堆栈部分,在信息后台是可以看到清晰的异常定位的。这样可以快速的帮助开发者定位到问题所在:

同时Game Performance Reporting提供异常的基本数据统计,包括异常出现的设备,异常出现的时间点,影响到的客户数量以及影响到的版本等等:

通过以上两个工具,在开发期和运行时,开发者都可以很好的管理游戏的Bug数量,评估工程的质量,及时发现和修改问题,从而提供更好的游戏体验给广大玩家。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容