Version: 2017.3
Unity Test Runner
IL2CPP

Unity 테스트 러너 유틸리티(Unity Test Runner utilities)

Unity 테스트 러너에는 부동 소수점 값과 Vector2, Vector4 등과 같은 일부 비프리미티브 오브젝트를 비교하기 위해 NUnit 제약과 함께 사용할 수 있는 유틸리티가 포함되어 있습니다. 이러한 클래스는 UnityEngine.TestTools.Utils 네임스페이스에 배치됩니다.

클래스: Utils

유틸리티 함수를 포함하는 클래스입니다.

AreFloatsEqual

서명 public static bool AreFloatsEqual(float expected, float actual, float allowedRelativeError)

설명 이 메서드는 두 부동 소수점 숫자의 상대 엡실론 비교를 수행하여 두 숫자가 같은지 확인하고, 상대 오차를 세 번째 파라미터로 사용합니다. 상대 오차는 절대 오차를 정확한 값의 크기로 나눈 것입니다.

사용법

using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class UtilTests
{
    [Test]
    public void FloatsAreEqual()
    {
        float expected = 10e-8f;
        float actual = 0f;
        float allowedRelativeError = 10e-6f;
        Assert.That(Utils.AreFloatsEqual(expected, actual, allowedRelativeError), Is.True);
    }
}

AreFloatsEqualAbsoluteError

서명 public static bool AreFloatsEqualAbsoluteError(float expected, float actual, float allowedAbsoluteError)

설명 이 메서드는 두 부동 소수점 숫자를 비교하여 특정 허용치에서 두 숫자가 같은지 확인합니다.

사용법

using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class UtilTests
{
    [Test]
    public void FloatsAreAbsoluteEqual()
    {
        float expected = 0f;
        float actual = 10e-6f;
        float error = 10e-5f;
        Assert.That(Utils.AreFloatsEqualAbsoluteError(expected, actual, error), Is.True);
    }
}

CreatePrimitive

서명 public static GameObject CreatePrimitive(PrimitiveType type)

설명 GameObject.CreatePrimitive와 유사하나, 성능 테스트에 최적화된 기본 내장 셰이더 대신 빠른 셰이더를 사용하여 프리미티브 메시 렌더러를 생성합니다. 프리미티브 메시 렌더러와 콜라이더가 있는 GameObject를 반환합니다.

사용법

var box = Utils.CreatePrimitive(PrimitiveType.Cube);

FloatEqualityComparer

System.Collections.Generic.IEqualityComparer<float>를 구현합니다. 상대 엡실론 비교를 사용하여 두 부동 소수점 값이 같은지 확인하기 위해 이 비교자를 NUnit 제약과 함께 사용할 수 있습니다. 이 비교자는 내부적으로 Utils.AreFloatsEqual을 사용하여 부동 소수점 값을 비교합니다.

사용법

using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class FloatsTest
{
    [Test]
    public void FloatsAreEqual()
    {
        var comparer = new FloatEqualityComparer(10e-6f);
        var actual = -0.00009f;
        var expected = 0.00009f
        Assert.That(actual, Is.EqualTo(expected).Using(comparer));

        //Default allowed relative error 0.0001f
        var actual = -0.01f;
        var expected = 0.001f
        Assert.That(actual, Is.EqualTo(expected).Using(FloatEqualityComparer.Instance));
    }
}

ColorEqualityComparer

이 클래스를 NUnit 제약과 함께 사용하여 두 UnityEngine.Color 오브젝트를 비교해서 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Color> 인터페이스를 구현합니다. ColorEqualityComparer 생성자에서 값을 제공하지 않으면 0.01f가 비교를 위한 기본 오차로 간주됩니다.

사용법

using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class ColorTest
{
    [Test]
    public void ColorsAreEqual()
    {
        //Allowed error 10e-5f
        var comparer = new ColorEqualityComparer(10e-5f);
        var firstColor = new Color(0f, 0f, 0f, 1f);
        var secondColor = new Color(10e-6f, 0f, 0f, 1f);
        Assert.That(firstColor, Is.EqualTo(secondColor).Using(comparer));

        //Using default error
        firstColor = new Color(0f, 0f, 0f, 0f);
        secondColor = new Color(0f, 0f, 0f, 0f);
        Assert.That(firstColor, Is.EqualTo(secondColor).Using(ColorEqualityComparer.Instance));
    }
}

QuaternionEqualityComparer

이 클래스를 NUnit 제약과 함께 사용하여 UnityEngine.Quaternion 오브젝트를 비교해서 두 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Quaternion> 인터페이스를 구현합니다. Instance 정적 인스턴스는 기본 오차 0.00001f와 비교하는 데 사용합니다. 커스텀 오차 값으로는 단일 인수 생성자를 사용합니다.

사용법

using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class QuaternionTest
{
    [Test]
    public void QuaternionsAreEqual()
    {
        var actual = new Quaternion(10f, 0f, 0f, 0f);
        var expected = new Quaternion(1f, 10f, 0f, 0f);
        var comparer = new QuaternionEqualityComparer(10e-6f);
        Assert.That(actual, Is.EqualTo(expected).Using(comparer));
    }
}

Vector2EqualityComparer

이 클래스를 NUnit 제약과 함께 사용하여 두 UnityEngine.Vector2 오브젝트를 비교해서 두 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Vector2> 인터페이스를 구현합니다. 정적 Instance 멤버는 기본 오차 0.0001f를 사용하여 비교하는 데 사용합니다. 비교자 오브젝트를 구성하면서 커스텀 오차 값을 제공할 수 있습니다. Utils.AreFloatsEqual상대 엡실론 비교(정확한 값의 크기로 나눈 절대 오차)를 사용하여 개별 좌표를 비교합니다.

사용법

using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class Vector2Test
{
    [Test]
    public void Vector2AreEqual()
    {
        //Custom error
        var actual = new Vector2(10e-7f, 10e-7f);
        var expected = new Vector2(0f, 0f);
        var comparer = new Vector2EqualityComparer(10e-6f);
        Assert.That(actual, Is.EqualTo(expected).Using(comparer));

        //Default error 0.0001f
        actual = new Vector2(0.01f, 0.01f);
        expected = new Vector2(0.01f, 0.01f);
        Assert.That(actual, Is.EqualTo(expected).Using(Vector2EqualityComparer.Instance));
    }
}

Vector3EqualityComparer

이 클래스를 NUnit 제약과 함께 사용하여 두 UnityEngine.Vector3 오브젝트를 비교해서 두 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Vector3> 인터페이스를 구현합니다. 정적 Instance 멤버는 기본 오차 0.0001f를 사용하여 비교하는 데 사용합니다. 비교자 오브젝트를 구성하면서 커스텀 오차 값을 제공할 수 있습니다. Utils.AreFloatsEqual상대 엡실론 비교(정확한 값의 크기로 나눈 절대 오차)를 사용하여 개별 좌표를 비교합니다.

사용법


using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class Vector3Test
{
    [Test]
    public void Vector3AreEqual()
    {
        //Custom error 10e-6f
        var actual = new Vector3(10e-8f, 10e-8f, 10e-8f);
        var expected = new Vector3(0f, 0f, 0f);
        var comparer = new Vector3EqualityComparer(10e-6f);
        Assert.That(actual, Is.EqualTo(expected).Using(comparer));

        //Default error 0.0001f
        actual = new Vector3(0.01f, 0.01f, 0f);
        expected = new Vector3(0.01f, 0.01f, 0f);
        Assert.That(actual, Is.EqualTo(expected).Using(Vector3EqualityComparer.Instance));
    }
}

Vector4EqualityComparer

이 클래스를 NUnit 제약과 함께 사용하여 두 UnityEngine.Vector4 오브젝트를 비교해서 두 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Vector4> 인터페이스를 구현합니다. 정적 Instance 멤버는 기본 오차 0.0001f를 사용하여 비교하는 데 사용합니다. 비교자 오브젝트를 구성하면서 커스텀 오차 값을 제공할 수 있습니다. Utils.AreFloatsEqual상대 엡실론 비교(정확한 값의 크기로 나눈 절대 오차)를 사용하여 개별 좌표를 비교합니다.

사용법

using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class Vector4Test
{
    [Test]
    public void Vector4AreEqual()
    {
        //Custom error 10e-6f
        var actual = new Vector4(0, 0, 1e-6f, 1e-6f);
        var expected = new Vector4(1e-6f, 0f, 0f, 0f);
        var comparer = new Vector4EqualityComparer(10e-6f);
        Assert.That(actual, Is.EqualTo(expected).Using(comparer));

        //Default error 0.0001f
        actual = new Vector4(0.01f, 0.01f, 0f, 0f);
        expected = new Vector4(0.01f, 0.01f, 0f, 0f);
        Assert.That(actual, Is.EqualTo(expected).Using(Vector4EqualityComparer.Instance));
    }
}

Vector2ComparerWithEqualsOperator

이 클래스를 NUnit 제약과 함께 사용하여 두 UnityEngine.Vector2 오브젝트를 비교해서 두 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Vector2> 인터페이스를 구현합니다. 오버로드 operator== of UnityEngine.Vector2를 사용하여 두 Vector2 오브젝트를 비교합니다.

사용법

using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class Vector2Test
{
    [Test]
    public void VectorsAreEqual()
    {
        var actual = new Vector2(10e-7f, 10e-7f);
        var expected = new Vector2(0f, 0f);
        Assert.That(actual, Is.EqualTo(expected).Using(Vector2ComparerWithEqualsOperator.Instance));
    }
}

Vector3ComparerWithEqualsOperator

이 클래스를 NUnit 제약과 함께 사용하여 두 UnityEngine.Vector3 오브젝트를 비교해서 두 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Vector3> 인터페이스를 구현합니다. 오버로드 operator== of UnityEngine.Vector3를 사용하여 두 Vector3 오브젝트를 비교합니다.

사용법

using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class Vector3Test
{
    [Test]
    public void VectorsAreEqual()
    {
        var actual = new Vector3(10e-7f, 10e-7f, 10e-7f);
        var expected = new Vector2(0f, 0f, 0f);
        Assert.That(actual, Is.EqualTo(expected).Using(Vector3ComparerWithEqualsOperator.Instance));
    }
}

Vector4ComparerWithEqualsOperator

이 클래스를 NUnit 제약과 함께 사용하여 두 UnityEngine.Vector4 오브젝트를 비교해서 두 오브젝트가 같은지 확인할 수 있습니다. 이 클래스는 System.Collections.Generic.IEqualityComparer<Vector4> 인터페이스를 구현합니다. 오버로드 operator== of UnityEngine.Vector4를 사용하여 두 Vector4 오브젝트를 비교합니다.

사용법

using UnityEngine;
using NUnit.Framework;
using UnityEngine.TestTools.Utils;

[TestFixture]
public class Vector4Test
{
    [Test]
    public void Vector4AreEqual()
    {
        var actual = new Vector4(0, 0, 1e-6f, 1e-6f);
        var expected = new Vector4(1e-6f, 0f, 0f, 0f);
        Assert.That(actual, Is.EqualTo(expected).Using(Vector4ComparerWithEqualsOperator.Instance));
    }
}

  • 2017–09–13 일부 편집 리뷰를 거쳐 페이지 게시됨

  • 2017.3에서 재생 모드 테스트 프레임워크 유틸리티 추가됨 NewIn20173

Unity Test Runner
IL2CPP