Unity中的单元测试

 

我知道的单元测试有两种方法

1.从Unity的AssetStore窗口下载UnityTestTools(已下架了)

2.使用TestRuner(2018.2.5以上版本有,我用的是2018.2.7)

TestRuner的用法:

操作窗口: Window->General->Test Runner

1.playMode模式:测试含有Update部分的代码,EditMode模式:测试不含Update部分代码

2.RunAll在编辑器中执行所有的单元测试代码(我们写的测试代码) RunSelected执行所选择的单元测试代码Run all in player 在 实际设备上执行所有的单元测试代码

3.是个选择框,我们可以在框里选择Vertical Layout ,Horizontal Layout 两种窗口布局方式,Enable playmode tests for all assemblies 初次添加单元测试需要点击这里并重启unity才能写单元测试代码,否则会有报错

4.运行结果的显示框,可以看到运行时间,如果运行失败的话会显示运行堆栈。

代码编写:

PlayMode部分单元测试代码:(rider用户可以通过在rider编辑器的solution面板 右键:->add->Play Mode Test创建)

创建c#脚本,清空模版内容添加如下代码

sing System.Collections;

using NUnit.Framework;

using UnityEngine.TestTools;

 

namespace Sample.Tests

{

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;

}

}

}

 

[Test] 部分写我们不需要执行update的测试代码,

[UnityTest] 部分写需要执行update的代码 yield return null 表示执行一次update

除了Test,UnityTest这些属性之外还有

[SetUp]//单元测试运行前的准备工作(写我们的初始环境设置代码,如我们框架的启动)

[TearDown]//单元测试运行后的清除工作

在Test 和UnityTest中我们可以对结果进行验证 :

如: Assert.AreEqual(2,m_Target.SimpleIntReturn(1)) 这里验证 m_Targe.SimpleIntReturn(1)执行的结果是不是2

你可能感兴趣的:(Unity,单元测试)