15.Unity Zenject高级编程(WritingAutomatedTest测试用例)


Writing Automated Unit Tests and Integration Tests

当你使用DI正确编写低耦合的代码,非常容易隔离指定区域的代码,基本意图是运行测试,
在不需要启动你项目的前提下;这些可以从用户派生的测试框架或者使用NUnit自动化测试;
自动化测试对于持续和服务器交互特别有帮助;这允许你自动运行测试无论何时有新的提交到版本控制;

有三种基本的测试帮助类包含在Zenject里面,可以更容易的编写自动化测试游戏;
第一个是Unit Tests,另外一个是交互测试,第三个是场景测试;
所有的方法通过Unity内置的Test Runner来运行(也有一个命令行接口你可以持续的和服务器进行测试);
最主要的不同是Unit Tests更小的范围意味着测试子集类,在应用里面,
交互测试可以更易夸张并且可以从很多不同的系统来触发;
场景测试一般用于触发进入场景并且校验场景状态作用测试的一部分
代码示例:

Unit Tests
using System;

public class Logger
{
   
    public Logger()
    {
   
        Log = "";
    }

    public string Log
    {
   
        get;
        private set;
    }

    public void Write(string value)
    {
   
        if (value == null)
        {
   
            throw new ArgumentException();
        }

        Log += value;
    }
}

通过以下步骤来测试类:

  • 点击Window -> General -> Test Runner来打开Unity的Test Runner
  • 在EditMode页签下面点击Create EditMode Test Assembly Folder;
    这将创建一个文件夹,包含了必要的asmdef文件,
    需要来访问NUnit命名空间
  • 选择新创建的asmdef文件并且添加Zenject-TestFramework引用
  • 右击Project页签选择Create -> Zenject -> Unit Test;命名为TestLogger.cs;创建一个空模板测试类
  • 复制下面的代码:
using System;
using Zenject;
using NUnit.Framework;

[TestFixture]
public class TestLogger : ZenjectUnitTestFixture
{
   
    [SetUp]
    public void CommonInstall()
    {
   
        Container.Bind<Logger>().AsSingle();
    }

    [Test]
    public void TestInitialValues()
    {
   
        var logger = Container.Resolve<Logger>();

        Assert.That(logger.Log == "");
    }

    [Test]
    public void TestFirstEntry()
    {
   
        var logger = Container.Resolve<Logger>();

        logger.Write("foo");
        Assert.That(logger.Log == "foo");
    }

    [Test]
    public void TestAppend()
    {
   
        var logger = Container.Resolve<Logger>();

        logger.Write("foo");
        logger.Write("bar");

        Assert.That(logger.Log 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值