博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3d官方测试插件学习-单元测试,集成测试
阅读量:6325 次
发布时间:2019-06-22

本文共 1977 字,大约阅读时间需要 6 分钟。

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

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

 

 

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

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

 

之前没有用过单元测试的童鞋可以用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等许多插件。无非一些按钮响应事件利用反射强制调用一下。

 

转载地址:http://hdmaa.baihongyu.com/

你可能感兴趣的文章
支持向量机---线性支持向量机与软间隔最大化
查看>>
puppet自动化管理工具学习之文件
查看>>
Ubuntu安装RPM格式软件包
查看>>
SQL Server中的临时表和表变量 Declare @Tablename Table【转】
查看>>
汇编语言指令英文全称
查看>>
pure-ftpd脚本安装
查看>>
Linux NC 命令
查看>>
ThinkingInJava_6
查看>>
抓取安居客二手房经纪人数据,python爬虫自动翻页
查看>>
Office 2013 正式版--英文版/简体中文版下载(正版验证)
查看>>
iOS程序框架设计之皮肤切换功能 (白天与夜间效果)
查看>>
iptables
查看>>
Project facet Java 6.0 is not supported by target runtime Apache Tomcat v5.5.
查看>>
一个全新的拖拽分页—艺术啊
查看>>
Linux学习之CentOS(三十)--SELinux安全系统基础
查看>>
LVS+keepalived高可用群集
查看>>
jQuery库简介
查看>>
win7系统设置电脑不待机状态的操作方法
查看>>
nginx+php安装配置
查看>>
LAMP+Centos6.5上安装zabbix
查看>>