2016/11/27更新:官方的测试工具有许多问题,我修改了一个版本 https://git.oschina.net/Hont/UnitTest_Modifyed

支持切场景,异常不失败等

其实Unity很早就有测试支持,从mono编辑器的UnitTest选项,还有安装目录中的NUnit.dll都可以看出来。

这次拿了AssertStore下的测试插件研究了一下,总结了一套可行的方案

https://www.assetstore.unity3d.com/#/content/13802

之前没有用过单元测试的童鞋可以用vs的单元测试先上手,下载一个vs2012

这个插件分为2种测试模式,单元测试UnitTest和集成测试Integration

单元测试模式有一个弊端,就是只能在编辑器状态下运行。你可以用许多Editor下的东西,但无法再运行状态下就意味着不支持NGUI,PlayMarker等。

而集成测试它会调用Unity的运行函数,然后逐个跑测试用例。相当于实际游戏运行环境,所以一般都用集成测试来做

集成测试分为2种,动态集成测试和普通集成测试

下面会逐一讲解

1.插件下载之后,Examples第二项则是集成测试例子。

2.然后打开集成测试面板Integration Test Runner

3.每一项集成测试都需要通过断言的组件的判断。

4.测试完成之后,在层级面板,测试面板也会有标注。

这种普通的集成测试一般用于 是否渲染可见,是否y坐标小于5。但有许多的约束性

调用函数很麻烦,无法像vs那样Assert.IsTrue(...)。所以要用到动态集成测试

5.有关动态集成测试的例子在这里,可以看一下DynamicIntegrationTest.cs脚本怎么写的

using System;
using System.Collections.Generic;
using UnityEngine;[IntegrationTest.DynamicTestAttribute("ExampleIntegrationTests")]//绑定的场景名
// [IntegrationTest.Ignore] 忽略这个测试
[IntegrationTest.ExpectExceptions(false, typeof(ArgumentException))]//期望异常,当ArgumentException时,测试返回成功
[IntegrationTest.SucceedWithAssertions]//根据所有断言来判断是否成功
[IntegrationTest.TimeoutAttribute(1)]//当超时返回失败,如果不设置,默认时限5秒
[IntegrationTest.ExcludePlatformAttribute(RuntimePlatform.Android, RuntimePlatform.LinuxPlayer)]//忽略掉的平台
public class DynamicIntegrationTest : MonoBehaviour
{public void Start(){IntegrationTest.Pass(gameObject);}
}

6.测试脚本,第一个特性DynamicTestAttribute("..")是绑定的场景名。如果在该场景名下,动态测试脚本会自动挂载到测试面板中。

[IntegrationTest.DynamicTestAttribute("ExampleIntegrationTests")]
[IntegrationTest.ExcludePlatformAttribute(RuntimePlatform.Android, RuntimePlatform.LinuxPlayer)]
public class Test1 : MonoBehaviour
{public void Start(){IntegrationTest.Assert(gameObject);}
}[IntegrationTest.DynamicTestAttribute("ExampleIntegrationTests")]
[IntegrationTest.ExcludePlatformAttribute(RuntimePlatform.Android, RuntimePlatform.LinuxPlayer)]
public class Test2 : MonoBehaviour
{public void Start(){IntegrationTest.Assert(gameObject);}
}

View Code

7.这样一个.cs文件里,创建若干个测试类。再针对不同模块,分成不同测试场景,进行测试。即可

这样也能支持NGUI等许多插件。无非一些按钮响应事件利用反射强制调用一下。

转载于:https://www.cnblogs.com/hont/p/4091807.html

Unity3d官方测试插件学习-单元测试,集成测试相关推荐

  1. 自动驾驶层次测试体系(单元测试/集成测试/SIL/HIL/VIL/RIL/LABCAR/实车等)

    智能驾驶的测试是一个非常复杂的系统,我们用一篇文章,由小到大的逐个展开来和大家一起梳理下.在梳理之前我们先抛出一个问题,自动驾驶的测试量需要达到什么量级?根据国际一般标准统计,人类司机驾驶一小时的死亡 ...

  2. .net测试篇之单元测试/集成测试神器Autofixture

    autofixture简介 有了单元测试框架加上Moq(后面我们会用单独章节来介绍moq),可以说测试问题基上都能搞定了.然而有了AutoFixture对单元测试来说可以说是如虎添翼,AutoFixt ...

  3. 【初阶】unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流...

    [初阶]unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流 一.关于 显示分数时,如何让函数之间相互交流 这是一个非常好的逻辑问题 1 思路:主 ...

  4. 这一次,彻底入门前端测试,覆盖单元测试、组件测试(2.4w 字)

    前端测试一直是前端工程化中很重要的话题,但是很多人往往对测试产生误解,认为测试不仅没有什么用而且还浪费时间,或者测试应该让测试人员来做,自己应该专注于开发.所以,文章开头会先从"软件工程语境 ...

  5. php仿伊人集源码,仿伊人集wecenter()包含所有功能及官方付费插件,整站带数据...

    演示地址:如有演示站请以演示为准,无演示站以截图为准,源码太多服务器有限,无法搭建所有源码演示站,请谅解! 新手购买指导:1.在本站注册账号 丨 2.登录已注册账号充值源码所需金币 丨 3.登录账号下 ...

  6. 【贪玩巴斯】Unity3D初学圣经(一)——学习要求 Unity简单介绍 游戏引擎介绍 课程体系介绍 「1-1 到 1-4 」—— 2021年12月9日

    Unity3D初学圣经 一 --学习要求 & Unity简单介绍 & 游戏引擎介绍 & 课程体系介绍 本文对应视频P1 1-1 到P2 1-4 1.学习要求 2.Unity简单 ...

  7. unity3d 各大插件评测

    原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 引言:想用Unity3D制作优秀的游戏,插件是必不可少的.工欲善其事必先利其器.本文主旨是告诉使用Unity3D引擎的同学们如何根据需求选择 ...

  8. Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画

    Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画 *版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 [Unity] ...

  9. 测试开发学习之旅------进阶篇

    习题课 因果图法 自动饮料的售卖 机,可以输入1.5毛钱或者两块钱硬币,一瓶饮料的价钱1.5 可乐,雪碧,红茶,按哪一种饮料,出哪一种饮料,如果输入2块钱按相应的饮料,出饮料的同时会找出5毛硬币 (1 ...

最新文章

  1. linux刷新指定URL脚本,【图片】linux下crontab定时执行本地脚本和定时访问指定url【不要牧师吧】_百度贴吧...
  2. repmat--矩阵的复制和平铺
  3. Redis进阶-Redis 4种MQ 方案对比
  4. asp.net中上传文件实例
  5. 分布式mysql保持数据一致性_一种分布式跨数据库保持事务一致性的方法及系统与流程...
  6. 为什么都说猫有九条命呢
  7. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞动
  8. 现在JavaScript日期–如何在JavaScript中获取当前日期
  9. 解决http://localhost:3000/favicon.ico 的404 问题(含案例解析)
  10. java redis缓存使用_java使用redis缓存数据库
  11. 想赚钱是好事,但盲目创业就容易悲剧
  12. 化学实验中计算机技术的应用,浅谈计算机在基础化学实验中的应用
  13. Javascript第六章基本数据类型和引用数据类型第三课
  14. 计算机丢失gdiplus.dll怎么办,win7系统丢失gdiplus.dll报错的解决办法
  15. 摩尔定律还会一直生效吗?
  16. 使用Pyecharts进行全国水质TDS地图可视化全过程8:绘制中国地图,使用timeline把多个值放在一个地图上
  17. [数据挖掘笔记01] 关联规则Apriori算法
  18. ffmpeg gif拆分成多张jpg
  19. arXiv每日推荐-5.9:计算机视觉/图像处理每日论文速递
  20. ecshop其他页面判断是智能手机访问也跳转到ECTouch对应手机版页面[有修正]

热门文章

  1. angular项目整合到.net mvc中
  2. TortoiseGit的安装使用
  3. uva 11275 3D Triangles (3D-Geometry)
  4. KSQL中Update多表级联更新的语法
  5. Windows 7关闭和开启系统休眠
  6. Assembly.Load,LoadFile,LoadFrom
  7. redis客户端-服务端协议(RESP协议)
  8. 外网质量监控系统实践之路
  9. React 第七章 条件渲染
  10. python图像加坐标_Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例...