07
31

ITestRunCallback 인터페이스

ITestRunCallback 인터페이스는 테스트 실행 중에 발생하는 이벤트를 처리하는 데 사용된다.

테스트 러너가 테스트를 실행하면서 다양한 상황에서 호출되는 콜백 메서드를 제공한다.

이를 활용하여 테스트가 시작되었을 때, 완료되었을 때,
에러가 발생했을 때 등의 상황에서 추가적인 동작을 수행할 수 있다.
  • 예제 코드
using UnityEngine.TestTools;

public class MyTestRunCallback : ITestRunCallback
{
    // 테스트 시작 시 호출됩니다.
    public void RunStarted(ITest testsToRun)
    {
        Debug.Log("테스트가 시작되었습니다.");
    }

    // 테스트 종료 시 호출됩니다.
    public void RunFinished(ITestResult testResults)
    {
        Debug.Log("테스트가 종료되었습니다.");
    }

    // 테스트 실행에 실패한 경우 호출됩니다.
    public void TestStarted(ITest test)
    {
        Debug.Log("테스트가 시작되었습니다: " + test.FullName);
    }

    // 테스트 실행에 성공하거나 실패한 경우 호출됩니다.
    public void TestFinished(ITestResult result)
    {
        if (result.ResultState == TestResultState.Success)
        {
            Debug.Log("테스트가 성공적으로 완료되었습니다: " + result.Test.FullName);
        }
        else if (result.ResultState == TestResultState.Failure)
        {
            Debug.Log("테스트가 실패하였습니다: " + result.Test.FullName + ", 에러 메시지: " + result.Message);
        }
    }

    // 테스트 실행 도중 에러가 발생한 경우 호출됩니다.
    public void TestFailed(ITestResult result)
    {
        Debug.LogError("테스트가 에러로 인해 실패하였습니다: " + result.Test.FullName + ", 에러 메시지: " + result.Message);
    }
}

IMonoBehaviourTest 인터페이스

IMonoBehaviourTest 인터페이스는 테스트 스크립트가 MonoBehaviour를 상속받아 작성될 때 사용된다.

이 인터페이스를 구현함으로써 MonoBehaviour를 테스트에서 사용할 수 있다.

테스트 실행 중에 MonoBehaviour의 Start(), Update(), FixedUpdate() 등과 같은 메서드들이 실행되며,
이를 통해 테스트가 원하는 동작을 수행하거나 확인할 수 있다.
  • 예제 코드
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;

public class MyMonoBehaviourTest : MonoBehaviour, IMonoBehaviourTest
{
    // 테스트가 완료되었는지 여부를 추적하는 변수
    private bool testComplete = false;

    // IMonoBehaviourTest 인터페이스의 속성
    public bool IsTestFinished => testComplete;

    // 테스트할 MonoBehaviour의 객체
    private MyMonoBehaviour myMonoBehaviour;

    [UnityTest]
    public IEnumerator MyMonoBehaviour_Test()
    {
        // 테스트용 MonoBehaviour 객체 생성
        myMonoBehaviour = gameObject.AddComponent<MyMonoBehaviour>();

        // MonoBehaviour 객체의 동작 테스트
        myMonoBehaviour.DoSomething();

        // 테스트가 완료될 때까지 대기
        yield return new WaitForSeconds(1f);

        // 테스트 조건을 확인하고 결과 평가
        Assert.AreEqual(42, myMonoBehaviour.GetValue());

        // 테스트가 완료되었음을 표시
        testComplete = true;
    }
}

// 테스트할 MonoBehaviour 클래스
public class MyMonoBehaviour : MonoBehaviour
{
    private int value = 0;

    public void DoSomething()
    {
        value = 42;
    }

    public int GetValue()
    {
        return value;
    }
}
COMMENT