Unity3D Unit Test

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

编者注

由于接触一段时间的Unity,写些小脚本,运行起来就可以。但是,当编写底层服务或独立的C#特性内容,无法方法的单元测试,这导致代码质量较低,开发效率差。随即研究Unity3D中的单元测试。

网络资料

查询的一些资料

Nunit

Rider

由于编者一直使用IDEA,所以Unity程序均用Rider进行开发。Rider具有Unity3d的插件。

自动测试代码

在Rider目录中,右键Add能够看到两个重要的文件,TestFixturePlay Mode Test,由于在Unity3d环境中,则优先测试Play Mode Test

using System.Collections;
using NUnit.Framework;
using UnityEngine.TestTools;

namespace ScriptsTest.Utils.Concurrent
{
    public class PlayModeTest1
    {
        [Test]
        public void PlayModeTest1SimplePasses()
        {
            // Use the Assert class to test conditions.
            
        }

        // A UnityTest behaves like a coroutine in PlayMode
        // and allows you to yield null to skip a frame in EditMode
        [UnityTest]
        public IEnumerator PlayModeTest1WithEnueratorPasses()
        {
            // Use the Assert class to test conditions.
            // yield to skip a frame
            yield return null;
        }
    }
}

碰到问题

虽然成功创建了测试,但是在Rider中执行测试一直报Failed。这是由于NUnit不具有UnityTest,无法识别该内容。

解决Rider中单元测试

通过TestFixture或删除[UnityTest]内容,就能够在Rider中执行单元测试

using System;
using NUnit.Framework;

namespace ScriptsTest
{
    [TestFixture]
    public class HelloWorldTest
    {
        [Test]
        public void helloworld()
        {
            string print = "Hello World!";
            Console.WriteLine(print);
            
            Assert.AreEqual(print, "Hello World!");
        }
    }
}

规范

与Unity无关的代码,可以直接使用TestFixture进行单元测试。
与Unity有关的代码,需要独立目录在Unity Test Runner中进行测试。

Unity Test Runner

Unity Test Runner
Unity Test Runner在UnityEditor菜单栏Windows->Test Runner
备注:仅仅测试成功EditorMode

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看