Unity-TestRunner单元测试

本文由 祝你万事顺利 出品,转载请注明出处。

单元测试

开发者编写的一段代码,用于检测代码用于检测被测代码一个很小、很明确功能的代码,是否和开发者期望的一致。单元测试可以实现:
1.静态类测试
2.静态方法测试
3.类的实例化测试
4.类的方法测试

Test Runner

Unity内部集成了单元测试的工具TestRunner,使用此工具编写单元测试用例。此工具提供了Edit模式和Play模式,可以在编译器模式下进行测试,也可以模拟真实运行进行测试。
Window > Test Runner中打开TestRunner

Edit Mode

在此模式下编写单元测试

public class NewEditModeTest
{

    private DoubleLinkedList<string> doubleLinkedList  = new DoubleLinkedList<string>();

    [SetUp]
    public void Set()
    {
        doubleLinkedList = new DoubleLinkedList<string>();
    }

	[Test,Order(1)]
    public void DoubleLinkedList_FirstNodeTest()
    {
        doubleLinkedList.AddFirst("firstNode");
        DoubleLinkedNode<string> node = new DoubleLinkedNode<string>("firstNode");
        Assert.AreEqual(doubleLinkedList.First.m_next.m_data, node.m_data);
    }

    [Test, Order(2)]
    public void DoubleLinkedList_AddRemoveTest()
    {
        doubleLinkedList.AddFirst("second");
        doubleLinkedList.AddFirst("third");
        //doubleLinkedList.RemoveLast();
        Assert.AreEqual(doubleLinkedList.First.m_next.m_data, "third");
    }

    [Test, Order(3)]
    public void DoubleLinkedList_LastNodeTest()
    {

    }

    [TearDown]
    public void TearDown()
    {
        doubleLinkedList = null;
    }
    [UnityTest]
    public IEnumerator AssetBundleManagerTest()
    {
        yield return null;
    }

}

Unity-TestRunner单元测试_第1张图片
这里在单元测试中创建了一个双向链表,测试了链表的增加删除的功能。

几个Attribute说明

Attribute Usage
Order Attribute test属性方法的执行顺序
SetUpAttribute 配置方法在所有test方法之前运行
TearDown Attribute 配置方法在所有test方法之后运行
Ignore Attribute 暂时忽略某个test方法

代码覆盖率

使用Visual Studio的代码覆盖率功能,测试应用覆盖大部分代码。
代码覆盖率时使用测试资源管理器运行方法时的一个选项。结果表将显示各个程序集、类和方法中运行代码的百分比。

分析覆盖率

正常覆盖率在80%左右。

代码覆盖率以块为单位计数。块是恰好有一个入口点和出口点的代码。在测试运行期间,如果程序的控制流通过某个块,则将该块记为“已覆盖”。使用次数对结果没有影响。

合并不同结果
在默写情况下可能需要组合来自不同的测试运行结果。例如,假设你在运行某个测试(输入为“2”)时发现某个特定函数已被覆盖了 50%。 当你第二次运行该测试(输入为“-2”)时,你在覆盖着色视图中发现该函数的另外 50% 也被覆盖。 现在,你合并来自这两个测试运行的结果,报告和覆盖率着色视图显示该函数已经 100% 被覆盖。
请使用“代码覆盖率”窗口中“合并”按钮的图标 合并代码覆盖率结果。 你可以选择最近的运行或导入的结果的任意组合。 如果要组合导出的结果,则必须先将其导入。

从代码覆盖率中排除元素

将特性System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute 添加到以下任一代码元素:类、结构、方法、属性、属性 setter 或 getter、事件。从覆盖率分数中排除代码中的特定元素。

因该看到的结果:

Unity-TestRunner单元测试_第2张图片

你可能感兴趣的:(Unity,测试,#,Unity开发之路)