다음과 같은 툴로 로우 레벨 테스트를 빌드하고 실행할 수 있습니다.
이 중 아무 툴이나 사용하여 명시적 테스트를 빌드하고 실행할 수 있습니다. 명시적 테스트는 가능하다면 항상 BuildGraph로 빌드하고 실행하는 것이 좋습니다. 묵시적 테스트는 현재 언리얼 빌드 툴로만 빌드하고 실행할 수 있습니다.
| 테스트 타입 가용성 | Visual Studio | 언리얼 빌드 툴 | BuildGraph |
|---|---|---|---|
| 묵시적 테스트 | 불가 | 가능 | 불가 |
| 명시적 테스트 | 가능 | 가능 | 가능 |
이 페이지 마지막에 있는 예시: 파운데이션 테스트 섹션에서는 언리얼 엔진에 포함된 로우 레벨 테스트 프로젝트를 빌드하고 실행하는 방법을 안내합니다.
Visual Studio
데스크톱 플랫폼에서 Visual Studio로 바로 명시적 테스트를 빌드하고 실행할 수 있습니다.
- UnrealVS를 설치합니다.
- 비록 선택 사항이지만, 테스트 검색성이 개선되므로 적극 권장합니다. UnrealVS에 대한 자세한 내용은 UnrealVS 익스텐션 문서를 참조하세요.
- Visual Studio에서 테스트 프로젝트를 빌드 하여 실행파일을 생성합니다.
- Visual Studio에 내장된 테스트 어댑터는 Catch2 실행파일에서 테스트를 검색합니다. UnrealVS로 빌드해도 되고 Visual Studio의 인터페이스를 사용하여 바로 빌드해도 됩니다.
- 테스트는 테스트 탐색기(Test Explorer) 에 표시됩니다. 메뉴에서 테스트(Test) > 테스트 탐색기 를 선택합니다. 여기에서 테스트를 실행하고 테스트 소스 코드로 이동할 수 있습니다.
- 테스트 탐색기에 테스트가 없다면, 앞서 2단계에서 빌드가 실행파일을 업데이트하지 않았을 가능성이 큽니다. 이 문제를 해결하려면 테스트 프로젝트에서 리빌드(Rebuild) 를 실행합니다.
언리얼 빌드 툴
빌드
명시적 테스트
언리얼 빌드 툴을 사용하여 명시적 테스트를 빌드할 수 있습니다. 타깃 클래스 MyTestsTarget 을 사용하여 명시적 테스트 케이스를 빌드한다고 가정해 보겠습니다.
.\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe MyTestsTarget Development Win64
위에서 사용한 환경설정은 Development 고 플랫폼은 Win64 인데 예시 목적입니다. 모든 환경설정과 플랫폼이 지원됩니다.
묵시적 테스트
묵시적 테스트를 빌드하려면, UnrealEditor 같은 기존 타깃을 사용하고, -Mode=Test 를 사용하면 주어진 타깃을 기반으로 프로그램 타깃을 빌드합니다.
.\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe UnrealEditor Development Win64 -Mode=Test
테스트 모드를 사용하면 종속성 그래프의 모든 모듈에 있는 테스트들이 하나의 실행 프로그램 안에 수집됩니다. 언리얼 빌드 툴은 현재 묵시적 테스트를 빌드할 수 있는 유일한 방법입니다.
실행
이전 UBT 명령은 테스트 실행파일을 빌드합니다. 테스트 실행파일은 Binaries/<PLATFORM> 과 같이 타깃이 일반적으로 출력하는 것과 동일한 기본 폴더에 있습니다. 하지만 타깃과 이름이 동일한 폴더 아래에 위치합니다. 다음은 언리얼 빌드 툴로 로우 레벨 테스트 실행파일을 위와 같이 빌드한 다음 명령줄에서 실행하는 예시입니다.
MyTests.exe --log --debug --sleep=5 --timeout=10 -r xml -# [#MyTestFile][Core] --extra-args -stdout
이 명령줄은 다음과 같은 작업을 수행합니다.
LLT 실행인자
--log --debug --sleep=5 --timeout=10
- UE 로깅을 활성화합니다.
- 테스트 시작, 종료, 완료 시간 등의 로우 레벨 테스트 디버그 메시지를 출력합니다.
- 5초를 기다렸다가 테스트를 실행합니다.
- 테스트당 10분의 타임아웃을 설정합니다.
Catch2 실행인자
-r xml -# [#MyTestFile][Core]
- XML 보고를 활성화합니다.
- 파일 이름을 필터 태그로 사용하고
[Core]가 태그된MyTestFile파일에서 모든 테스트를 선택합니다.
UE 실행인자
--extra-args -stdout
- UE 명령줄에
-stdout을 설정합니다.
명령줄 레퍼런스
빌드한 다음에는 테스트 실행파일을 사용하여 사전 제출 테스트를 실행하거나 지속 통합(CI)/지속 전달(CD) 파이프라인의 일부로 사용할 수 있습니다. LLT 실행파일은 다양한 사용 사례를 아우르는 다양한 명령줄 옵션을 지원합니다.
| 실행인자 | 플래그 또는 키-값 쌍 | 설명 |
|---|---|---|
--global-setup |
플래그 | UE 코어 컴포넌트를 초기화하는 글로벌 구성을 실행합니다. |
--no-global-setup |
플래그 | 사용 시 글로벌 구성을 비활성화합니다. |
--log |
플래그 | 활성화된 UE 로그 출력입니다. |
--no-log |
플래그 | 비활성화된 UE 로그 출력입니다. |
--debug |
플래그 | 현재 테스트 실행에 대한 LowLevelTestsRunner 로거 디버그 메시지를 활성화합니다. |
--mt |
플래그 | bMultiThreaded=true 로 설정합니다. 이를 사용하여 멀티스레드 환경을 설정합니다. |
--no-mt |
플래그 | bMultiThreaded=false 로 설정합니다. 이를 사용하여 싱글스레드 환경을 설정합니다. |
--wait |
플래그 | 종료 전에 사용자 입력을 기다립니다. |
--no-wait |
플래그 | 종료 전에 사용자 입력을 기다리지 않습니다. 이는 기본 동작입니다. |
--attach-to-debugger , --waitfordebugger |
플래그 | 애플리케이션은 글로벌 구성 단계 전에 디버거가 연결되기를 기다립니다. |
--buildmachine |
플래그 | UE 글로벌 변수 bIsBuildMachine=true 로 설정합니다. CI/CD 동작을 제어하는 개발 용도로 사용됩니다. |
--sleep=<SECONDS> |
키-값 쌍 | 글로벌 구성 단계 전의 절전 기간을 초 단위로 설정합니다. 동기화를 위해 시작 전에 테스트를 대기시켜야 하는 경우에 유용합니다. |
--timeout=<MINUTES> |
키-값 쌍 | 테스트당 타임아웃을 분 단위로 설정합니다. 단일 테스트 사례 중에 타임아웃에 도달하면 오류 메시지가 출력됩니다. |
--reporter= etc. -r etc. |
둘 다 | Catch2 명령줄 옵션입니다. 위의 명령줄 옵션에 해당하지 않고 --extra-args 뒤에 오지 않는 모든 명령줄 옵션은 자동으로 Catch2에 전송됩니다. Catch2 명령줄 옵션에 대한 전체 레퍼런스는 Catch2 GitHub 저장소의 외부 Catch2 명령줄 문서를 참조하세요. |
--extra-args |
플래그 | 이 옵션 뒤에 설정되는 모든 실행인자는 UE의 FCommandLine 에 설정됩니다. 기능이 명령줄에서 활성화되는 경우에 유용합니다. |
마지막 두 항목의 설명처럼 레퍼런스에 열거되지 않은 모든 실행인자는 --extra-args 까지 포함해 Catch2 명령줄 실행인자 목록에 바로 보내집니다.
BuildGraph
BuildGraph 스크립트를 사용하여 테스트를 빌드하고 실행하는 방법을 권장합니다. 기본 명령은 다음과 같은 형태입니다.
.\RunUAT.bat BuildGraph -Script="Engine/Build/LowLevelTests.xml" -Target="Run Low Level Tests"
Windows, Mac, Linux는 비슷한 명령을 사용할 수 있습니다.
Engine/Build/LowLevelTests.xml 에 있는 스크립트는 테스트 메타데이터 파일에 사용할 수 있습니다. 메타데이터 파일을 생성하려면 로우 레벨 테스트 타입 문서의 BuildGraph 스크립트 메타데이터 파일 생성 섹션을 참조하세요. 테스트 메타데이터 스크립트의 생성에 성공한 상태여야만 이 스크립트를 정상적으로 실행할 수 있습니다. 그러니 해당 파일이 예상 위치에 생성되었는지 확인해야 합니다. 모든 테스트 메타데이터 .xml 파일은 LowLevelTests.xml 에 포함되어 있으며, 이 메타데이터는 빌드 그래프에서 노드의 실행을 구동합니다.
BuildGraph 스크립트를 사용하는 일반적인 방법은 다음과 같습니다.
-
Windows에서
MyTest라는 이름으로 테스트를 실행합니다..\RunUAT.bat BuildGraph -Script="Engine/Build/LowLevelTests.xml" -Target="MyTest Tests Win64" -
기본값인 Development 이외의 특정 빌드 환경설정을 설정합니다. 예를 들어, 다음과 같이 환경설정을 Debug 로 설정할 수 있습니다.
.\RunUAT.bat BuildGraph -Script="Engine/Build/LowLevelTests.xml" -Target="Foundation Tests Win64" -set:Configuration="Debug" -
Debug 환경설정에서 테스트를 빌드하고 실행한 후 디버거가 연결될 때까지 기다립니다.
.\RunUAT.bat BuildGraph -Script="Engine/Build/LowLevelTests.xml" -Target="Foundation Tests Win64" -set:Configuration="Debug" -set:AttachToDebugger=true -
플랫폼의 툴이 주어진 이름이나 IP의 디바이스에 애플리케이션 배포를 지원하는 경우, 해당 디바이스에서 실행할 수 있습니다. 이 명령은 플랫폼에 원격 디버깅 툴이 있는 경우,
AttachToDebugger와 함께 사용할 수도 있습니다..\RunUAT.bat BuildGraph -Script="Engine/Build/LowLevelTests.xml" -Target="Foundation Tests Win64" -set:Device="<IP_OR_NAME_OF_DEVICE>" -
타깃 플랫폼에 대한 Catch2를 빌드합니다.
.\RunUAT.bat BuildGraph -Script="Engine/Build/LowLevelTests.xml" -Target="Catch2 Build Library Win64"
예시: 파운데이션 테스트
개요
파운데이션 테스트(Foundation Tests) 프로젝트는 Visual Studio 솔루션 탐색기(Solution Explorer) 의 Programs/LowLevelTests 폴더 아래 있습니다.
이 프로젝트는 Core , Cbor , CoreUObjects 등 핵심 UE 모듈의 묵시적 테스트를 통합하도록 설계되었습니다. 이는 명시적 테스트 툴세트로 설정되어 있지만, 타깃 파일에서 bWithLowLevelTestsOverride = true 플래그를 설정하면 종속 모듈의 묵시적 테스트를 수집할 수 있습니다. 예를 들어, Engine/Source/Runtime/Core/Tests 에서 Core 묵시적 테스트를 수집합니다.
파운데이션 테스트 프로젝트에 새 테스트를 추가하려면 프로젝트의 아무 종속 모듈에서나 묵시적 테스트를 생성합니다. 테스트는 .Build.cs 파일에서 지정한 모듈뿐 아니라 전체 종속성 그래프에서 가져오게 됩니다. 예를 들어, Core 모듈은 Engine/Source/Developer/DerivedDataCache/Tests 에서 정의한 테스트가 있는DerivedDataCache 모듈에 종속됩니다. 이러한 테스트들은 최종 실행파일에도 수집됩니다.
Tests/TestGroupEvents.cpp 에 정의된 수명 주기 이벤트가 있습니다. 이러한 이벤트 실행 순서는 테스트가 제대로 실행되는 데 영향을 미치므로 주의해야 합니다. 구성이 부족하거나 구성을 잘못 배치하면 런타임 오류가 발생할 수 있습니다. 해체 이벤트도 마찬가지입니다.
빌드 및 실행
Visual Studio에서 또는 BuildGraph를 사용하여 테스트를 빌드하고 실행합니다.
Visual Studio
Visual Studio에서 파운데이션 테스트를 빌드하는 절차는 다음과 같습니다.
- 테스트를 더 쉽게 빌드하는 UnrealVS 가 설치되어 있는지 확인합니다.
- 자세한 내용은 UnrealVS 익스텐션 문서를 참조하세요.
- Visual Studio 메뉴로 이동하여 솔루션 구성(Solution Configurations) 을 찾습니다.
- 솔루션 구성 드롭다운에서 Tests 를 선택합니다.
- UnrealVS 툴바에서 시작 프로젝트(Startup Project) 드롭다운을 찾고 FoundationTests 를 선택합니다.
- Visual Studio 메뉴 바에서 빌드(Build) > 솔루션 빌드(Build Solution) 를 선택합니다.
이렇게 하면 파운데이션 테스트와 그 종속성이 빌드됩니다. 파운데이션 테스트를 실행하려면 터미널에서 Engine/Binaries/Win64/FoundationTests 디렉터리로 이동하거나 명령 프롬프트에서 ./FoundationTests 와 함께 FoundationTests.exe 실행파일을 실행합니다.
모두 올바르게 작동하면 터미널 창에 로그 텍스트가 표시됩니다. 모든 테스트가 패스하면 마지막에 '모든 테스트 통과...(All tests passed…)'라는 대화창이 표시됩니다.
BuildGraph
파운데이션 테스트를 빌드하고 실행하려면 프로젝트 디렉터리로 이동하여 다음 명령을 실행합니다.
.\RunUAT BuildGraph -Script="Engine/Build/LowLevelTests.xml" -Target="Foundation Tests Win64"
테스트를 실행할 다양한 플랫폼과 빌드 환경설정, 디바이스 타깃을 지정하거나 디버거가 연결될 때까지 테스트를 대기시킬 수 있습니다.