码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3d官方测试插件学习-单元测试,集成测试

时间:2015-03-18 10:40:12      阅读:516      评论:0      收藏:0      [点我收藏+]

标签:unity3d   unity   unity3d培训   unity3d极致学院   

欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多Unity3D资源Unity3D培训视频Unity3D教程Unity3D常见问题Unity3D项目源码,【狗刨学习网】unity极致学院,致力于打造业内unity3d培训、学习第一品牌。
其实Unity很早就有测试支持,从mono编辑器的UnitTest选项,还有安装目录中的NUnit.dll都可以看出来。只是国内很少有人研究。
这次拿了AssertStore下的测试插件研究了一下,总结了一套可行的方案
技术分享

之前没有用过单元测试的童鞋可以用vs的单元测试先上手,下载一个vs2012
这个插件分为2种测试模式,单元测试UnitTest和集成测试Integration

单元测试模式有一个弊端,就是只能在编辑器状态下运行。你可以用许多Editor下的东西,但无法再运行状态下就意味着不支持NGUI,PlayMarker等。
而集成测试它会调用Unity的运行函数,然后逐个跑测试用例。相当于实际游戏运行环境,所以一般都用集成测试来做
集成测试分为2种,动态集成测试和普通集成测试
下面会逐一讲解

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

技术分享
2.会多出一个页签,然后打开集成测试面板

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

技术分享
4.测试完成之后,在层级面板,测试面板也会有标注。(绑了层级显示的回调,意味着PlayMarker的‘玩‘字没了- -)
这种普通的集成测试一般用于 是否渲染可见,是否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))]
[IntegrationTest.SucceedWithAssertions]
[IntegrationTest.TimeoutAttribute(1)]
[IntegrationTest.ExcludePlatformAttribute(RuntimePlatform.Android, RuntimePlatform.LinuxPlayer)]
public class DynamicIntegrationTest : MonoBehaviour
{
public void Start()
{
IntegrationTest.Pass(gameObject);
}
}

6.测试脚本,第一个特性DynamicTestAttribute("..")是绑定的场景名。如果在该场景名下,动态测试脚本会自动挂载到测试面板中。这样用起来就比较舒服了


[align=left][color=rgb(0,0,0)][backcolor=rgb(254,254,242)][/backcolor][/color][/align]

[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);
}
}
7.这样一个.cs文件里,创建若干个测试类。再针对不同模块,分成不同测试场景,进行测试。即可
这样也能支持NGUI等许多插件。无非一些按钮响应事件利用反射强制调用一下。


更多内容,请访问【狗刨学习网】unity极致学院 
 声明:此篇文档时来自于【狗刨学习网】社区-unity极致学院,是网友自行发布的Unity3D学习文章,如果有什么内容侵犯了你的相关权益,请与官方沟通,我们会即时处理。
?

Unity3d官方测试插件学习-单元测试,集成测试

标签:unity3d   unity   unity3d培训   unity3d极致学院   

原文地址:http://blog.csdn.net/sauwque/article/details/44402081

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!