Unity 테스트 프레임워크 개요
Unity 테스트 프레임워크를 사용하면 편집 모드와 플레이 모드에서 코드를 테스트할 수 있으며 스탠드얼론, Android, iOS 등과 같은 타겟 플랫폼에서도 테스트할 수 있습니다.
이 패키지는 Unity 사용자 및 개발자에게 표준 테스트 프레임워크를 제공하여 둘 다 동일한 기능을 활용하고 동일한 방식으로 테스트를 작성할 수 있도록 지원합니다.
UTF에는 Unity에서 작동하도록 조정된 .Net 언어용 오픈 소스 유닛 테스트 라이브러리인 NUnit의 커스텀 통합(NUnit 3.5 기반)이 포함되어 있습니다. NUnit에 대한 자세한 내용은 공식 NUnit 웹사이트 및 NUnit 문서를 참조하십시오.
이 문서 활용
매뉴얼에는 Test Runner 창을 통해 테스트를 생성하고 실행하기 위한 주요 기능, 개념, 워크플로가 간략히 설명되어 있습니다. 스크립팅 API에는 공용 API에 대한 설명과 코드 예제가 포함되어 있습니다. 스크립팅 API를 자유롭게 탐색하거나 매뉴얼의 기능을 살펴보며 관심 있는 API 멤버를 찾을 수 있습니다..
필수 선행 지식
이 문서에서는 사용자가 다음과 같은 몇 가지 개념들을 잘 알고 있다고 가정합니다.
어셈블리
어셈블리는 Unity 테스트 프레임워크의 중요한 기본 개념입니다. Unity에서는 테스트를 테스트 어셈블리로 그룹화하고, 테스트가 실행되어야 하는 플랫폼을 참조하고 테스트하려는 프로젝트 어셈블리를 선택적으로 참조할 수 있도록 어셈블리 정의를 설정합니다. Unity 어셈블리 정의 문서, 그리고 인스펙터를 통해 또는 원하는 경우 어셈블리 정의(.asmdef) JSON 파일을 직접 편집하여 어셈블리 정의를 설정하는 방법을 숙지하고 있어야 합니다.
NUnit
UTF에는 Unity에서 작동하도록 조정된 NUnit의 커스텀 버전이 포함되어 있습니다. UTF 테스트를 작성할 때 사용하는 API는 대부분 NUnit API라는 점에 유의하십시오. 일부 테스트는 Unity 전용 API를 사용할 필요가 전혀 없을 수도 있습니다. UTF를 사용하기 전에 NUnit에 대해 숙지하고, UTF와 NUnit 문서를 함께 사용해야 합니다.
TDD 및 유닛 테스트
이 문서는 TDD(Test Driven Development) 또는 유닛 테스트에 대한 일반적인 입문서가 아닙니다. UTF는 Unity 사용자와 개발자 모두가 사용할 수 있도록 만들어졌지만, 다음과 같은 C# 또는 그와 유사한 언어의 유닛 테스트 규칙에 어느 정도 익숙하다고 가정합니다.
- 테스트를 설정하고, 작업을 수행하고, 결과를 예상하는 AAA(Arrange, Act, Assert) 패턴.
- 속성을 사용하여 메서드에 주석을 달고 테스트 실행의 여러 단계에서 실행되도록 지정.
- 인터페이스 및 콜백 구현.
Visual Studio의 유닛 테스트 기초에 대한 정보는 Microsoft 문서를 참조하십시오. Unity에서 UTF 테스트를 생성, 작성 및 실행하는 방식과 거의 유사합니다.
Unity 테스트 프레임워크 설치
이 패키지를 설치하려면 패키지 관리자 문서의 지침을 따르십시오.
참고: 테스트 프레임워크 패키지를 검색하십시오. Unity 2019.2 이상에서는 사용 전에 패키지를 활성화해야 할 수 있습니다.
요구 사항
이 버전의 Unity 테스트 프레임워크는 다음 버전의 Unity 에디터와 호환됩니다.
- 2019.2 이상.
알려진 제한 사항
Unity 테스트 프레임워크 버전 2.0.1에는 다음과 같은 알려진 제한 사항이 있습니다.
UnityTest속성이 WSA 플랫폼을 지원하지 않습니다.UnityTest속성이 파라미터화 테스트(ValueSource제외)를 지원하지 않습니다.UnityTest속성이NUnitRepeat 속성을 지원하지 않습니다.- 중첩된 테스트 픽스처를 에디터 UI에서 실행할 수 없습니다.
- 플레이 모드 테스트에서
NUnitRetry 속성을 사용하면InvalidCastException이 발생합니다. - 테스트가 런타임 시점에 생성되면 파라미터화 테스트가 작동하지 않습니다.
- UI의 테스트 트리는 실행 전에 빌드되며, 해당 시점에 트리와 일치하는 테스트만 표시합니다. 정의 뒤에 있는 테스트(예:
if #UNITY_ANDROID)는 계속 실행되지만, 결과가 에디터에 표시되지 않습니다. 이 문제를 해결하려면 정의 뒤에 테스트 메서드의 본문만 포함하십시오.