UnityTestRunner를 도입하여 T·D·D 입문해 보기

소개



T·D·D!
T·D·D!

USA적인 김으로 TDD 해보자.
나중에.
@t_wada

어떻게 TDD가 어떻게 해야 하는지 wikipedia 당 봐.

환경
Unity 2018.3.4f1

참고



a94dd56d.png (600×315)
Unity 사용은 전원 Unity Test Runner를 사용해라! 폭속의 트라이 & 에러 환경이다! - Qiita
Unity에서 제대로 테스트를 작성하고 싶은 사람들을위한 요약 - Qiita
Unity Test Runner - Unity 매뉴얼

위의 링크를 참고하여 Unity에서 작동하는 테스트 코드를 작성합니다.

했던 일



먼저 실패한 테스트를 작성합니다.
먼저 UnityTestRunner를 시작하고 테스트 코드 저장 폴더, 스크립팅 버튼을 눌러 간략한 테스트 코드만 작성된 스크립트를 만듭니다.
그 추가된 클래스 안에, 우선 이런 바보같이 반드시 실패하는 코드를 써 보겠습니다
// バカみたいに失敗するテスト
[Test]
public void NewTestScriptSimpleRun()
{
    Assert.IsTrue(false);
}

UnityTestRunner로 테스트를 실행합니다.
Unity 테스트 완전한 이해 (실제 기계, 자동, 합리적인 테스트에 익숙한 이야기) - Speaker Deck

예, 훌륭하게 추가한 코드만 실패했습니다. 했어.
콘솔에는 다음과 같은 오류가 발생합니다.
Assertion failure. Value was False
Expected: True
UnityEngine.Assertions.Assert:IsTrue(Boolean)
kt.Tests.NewTestScript:NewTestScriptSimpleRun() (at Assets/Tests/NewTestScript.cs:26)
System.Reflection.MethodBase:Invoke(Object, Object[])
NUnit.Framework.Internal.Reflect:InvokeMethod(MethodInfo, Object, Object[])
NUnit.Framework.Internal.MethodWrapper:Invoke(Object, Object[])
NUnit.Framework.Internal.Commands.TestMethodCommand:RunNonAsyncTestMethod(ITestExecutionContext)
NUnit.Framework.Internal.Commands.TestMethodCommand:RunTestMethod(ITestExecutionContext)
NUnit.Framework.Internal.Commands.TestMethodCommand:Execute(ITestExecutionContext)
NUnit.Framework.Internal.Commands.TestActionCommand:Execute(ITestExecutionContext)
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

제대로 의도대로 테스트가 실패하는지 확인한 후, 이번에는 성공하는 코드를 작성합니다.
우선 바보처럼 성공하는 코드를 작성해 보겠습니다.
// バカみたいに成功するテスト
[Test]
public void NewTestScriptSimpleRun()
{
    Assert.AreEqual(2, 1+1);
}



성공했습니다. 이번에는 내용에 의미가없는 코드이지만,

구현 → 실패 테스트 → 기능 테스트 → 코드 확장 → 실패 테스트 → 기능 테스트 →...

상기를 반복하는 것으로 많은 테스트가 행해져, 보수성이 높고 모듈화된 코드를 쓸 수 있다고 생각합니다.
제대로 의미가 있는 테스트 코드를 써 가는 경우, 상기한 참고 링크처를 바탕으로 테스트 기능을 확충해 가면 좋을까라고 생각합니다.

이번 샘플의 리포지토리는 아래와 같습니다.

좋은 웹페이지 즐겨찾기