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;
}
}