Framework Test Policy
Framework 테스트 작성 시 반드시 따르는 정책 문서.
원칙
- 모든 Public API는 최소 1개의 Unit Test를 목표로 한다(이번 1차 세션은 대표 API 우선, 전체 커버리지는 이후 세션에서 확장).
- 버그 수정 시에는 반드시 회귀(Regression) 테스트를 함께 추가한다.
- 테스트는 Arrange / Act / Assert 구조를 따른다(주석으로 구간을 명시).
- 외부 패키지(Addressables, Localization, FishNet 등)는 가능한 Mock 또는 테스트용 Fixture를 사용한다.
- Performance Test는 성능 측정만 수행하며 Pass/Fail 기준을 두지 않는다(Assert 없음, Console 로그로 결과 확인).
- 테스트는 Runtime 코드를 변경하지 않고 검증만 수행한다.
- Reflection 사용은 최소화한다. DI가 필요한 System은
new로 직접 생성해 테스트하며, DI 컨테이너를 통해서만 얻을 수 있는 인스턴스(Play Mode 전용 System)는 이번 세션 범위에서 제외하고 사유를 명시한다. - EditMode 테스트(
Framework.Tests.asmdef,[Test])는 Unity 생명주기가 필요 없는 순수 로직에 사용한다. PlayMode 테스트([UnityTest])는 GameObject/Scene/Coroutine 등 Unity 생명주기가 필요한 경우에만 사용한다.
명명 규칙
- 테스트 클래스:
{대상클래스}Tests - 테스트 메서드:
{메서드명}_{조건}_{기대결과}(예:HasFlag_FlagPresent_ReturnsTrue)
폴더 구조
Tests/TestFramework— 공통 Fixture/Base/UtilityTests/Runtime/Common|Core|Patterns|Systems— Unit TestTests/Integration— System 간 연동 TestTests/Performance— Benchmark(Assertion 없음)Tests/Utilities— 테스트 전용 Mock/Utility