zoukankan      html  css  js  c++  java
  • Unity 单元测试(NUnit,UnityTestTools)

    在软件开发中单元测试是非常重要的一个环节, =。=盘子脸去了几家公司都没有单元测试这个概念. 我们的系统虽然从代码看上是分离的, 在多数情况下都需要依赖于其他模块来运行.(单元测试部分内容教我解决这个问题.) 虽然学习了单元测试,但我相信实际过程中使用不到了. 接下来我稍微介绍下Unity如何进行单元测试.(推荐书籍”单元测试的艺术第二版”)

    为什么要使用单元测试:

    1. 我们可以从单元测试入口-> 我们编写的游戏模块 (而不是直接在Unity运行进入我们的模块)

    2. 在一个地方统一编写单元测试, 造成测试代码不会分散

    3. 还有很多很多优点,(使用单元测试很可能造成项目进度延后)

    测试框架:

    1. C# NUnit 非常不错的框架(需要在visual studio下载两个插件)

        Templates     是创建项目的一个模版,安装之后可以在visual studio中创建测试项目了

        Test Adapter 是调试窗口

    image

    1. UnityTestTools(框架已经对Unity窗口进行扩展,测试就直接在Unity窗口进行即可(大同小异而已)),AssetStore中可以下到

    开始介绍NUnit框架基本使用:

    首先我们创建一个控制台程序叫单元测试项目,接着创建NUnit测试项目(叫NUnit.Test1)

    image

    我们制作一个文件后缀名验证模块,其中一个FileVerify验证后缀名是否合法(txt). 接下来在控制台项目中创建一个FileVerify类里面有一个

    IsFileNameEndTxt方法验证字符串是否以txt结尾,是返回true,不是返回false

    public class FileVerify
        {
            //验证文件后后缀明是不是txt
            public bool IsFileNameEndTxt(string fileName) 
            {
                if(fileName.EndsWith(".txt"))
                    return true;
                else
                    return false;
            }
        }

    接下来看下我们的NUnit项目,他已经帮我们创建一个类(TestClass),里面已经有一个方法TestMethod().现在我们不需要写任何代码,点击菜单栏-测试->窗口->测试资源管理器, 如下图:

    点击全部运行,TestMethod就测试成功了.

    image

    接下来我们在TestMethod写入测试FileVerify.IsFileNameEndTxt()方法的单元测试, 我们首先想到传入1.txt 和 txt.两个字符串.你的项目要创建

    FileVerify类必须NUnit项目引入控制台项目

    [TestFixture]
        public class TestClass
        {
            [Test]
            public void TestMethod()
            {
                FileVerify f = new FileVerify();
                bool isResult =  f.IsFileNameEndTxt("1.txt");
                Assert.IsTrue(isResult);
    
                isResult = f.IsFileNameEndTxt("txt.");
                Assert.IsTrue(isResult,"这里报错了");
            }
        }

    我们在运行测试(这里一定会失败啦,因为”txt.”返回的是false), 遇到了Asset.IsTure(false) 抛出异常

    image

    单元测试如何调试?

    选中单个测试-> 调试选中测试

    到这里你已经学会了如何进行一个单元测试啦!()

    ==============================================================================

  • 相关阅读:
    [转载]Markdown基础语法
    [转载]转发和重定向的区别
    浅谈网站搭建中的内网穿透、端口转发等知识点
    [转载]HTTP和HTTPS
    [转载]为什么有些语言可以被反编译?而有的不能?
    例10-2 uva12169(扩展欧几里得)
    例10-1 uva11582(裴波那切数列)
    例10-7 uva10820(欧拉)
    hdu 5137(2014广州—最短路)
    hdu 5135(2014广州—状态dp)
  • 原文地址:https://www.cnblogs.com/plateFace/p/5176961.html
Copyright © 2011-2022 走看看