Unity 单元测试(PLUnitTest工具)

代码测试的由来

上几个星期上面分配给我一个装备系统,我经过了几个星期的战斗写完90%的代码. 后来策划告诉我需求有一定的改动,我就随着策划的意思修改了代码. 但是测试(Xu)告诉我装备系统很多功能都用不上了. Xu: 我有300多项测试用例,现在有很多项都无法运行了. 你修改了部分代码我又要全部跑一边, 我只能告诉你,我只能大概看一遍了. 之后我就买了本单元测试的书籍,向项目中引用代码测试的概念,帮助我几分钟测试完xxx多项测试用例,不过跟主程谈引入这个东西还是失败了, 应该他们认为不需要这个东西. 0.0那我还是把他放出来吧.

 

PLUnitTest(工具的由来)

我照着书籍上在Unity项目中创建单元测试框架, 后来发现我之前写好的函数,输入我传入一些数据才可以获取函数结果. 这些数据是一些类. 这些类的构造结构非常复杂,我的单元测试是在Untiy不运行下测试的. 而这些数据需要Unity运行下才能获取(比如从本地xml读取出来), 我不可能因为测试几个函数又要编写一套数据读取模块获取到函数需要的数据?(这样太麻烦), 聪明的盘子脸想到了在游戏中把这些数据序列化保存下来,拿到单元测试项目中使用,就可以测试自己的函数啦. 这个工具就诞生了.

如果你想在Unity 或者 其他项目中引入单元测试,但因为自己要组织数据来测试函数而烦恼,这个工具可以帮助你.

 

工具的作用:

1) 支持Json格式化输出字符串(以Json格式查看对象信息)

2) 支持对象状态捕捉

3) 序列化支持(Json,BinaryFormatter,ProtoBuffer等)

 

这里我就直接附上部分代码,图,地址. 

namespace PlatefaceTest
{
    [TestClass]
    public class EquipForgeTest
    {
        [TestMethod]
        public void EquipCompoud() 
        {
            //组织本次测试所需要的数据,PLUnitTools
            StateTools.CurSerializeType = SerializeType.Protobuf_Net;                           //选择序列化方式
            var i  = StateTools.GetState<c_gs.MetaData.Formula>(DefineTestId.TestId);           //反序列化,你捕捉的对象


            //代码测试
            Assert.IsTrue(ItemManager.Instance.MasterialTypeCheck(i, EquipForge.Instance.MasterialItemAry));
        }
    }
}

image

image

 

image

image

 

 

 

工具地址:http://code.taobao.org/svn/TestObjectCatch/

实例地址: http://code.taobao.org/svn/PLUintTestDemo/

posted @ 2016-04-01 15:09  盘子脸  阅读(2490)  评论(0编辑  收藏  举报