Unity 单元测试(NUnit,UnityTestTools)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 单元测试(NUnit,UnityTestTools)相关的知识,希望对你有一定的参考价值。

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

 

为什么要使用单元测试:

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

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

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

 

测试框架:

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

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

    Test Adapter 是调试窗口

技术分享

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

 

 

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

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

技术分享

我们制作一个文件后缀名验证模块,其中一个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就测试成功了.

技术分享

接下来我们在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) 抛出异常

技术分享

单元测试如何调试?

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

 

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

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

以上是关于Unity 单元测试(NUnit,UnityTestTools)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Unity3D 单元测试中显示代码覆盖率?

单元测试之NUnit二

单元测试、NUnit 还是 Visual Studio? [关闭]

使用 Fluentassertions 和 Nunit 在单元测试中进行计数验证

Nunit中如何进行事务性单元测试

单元测试-NUnit基础