Framework Test Policy

Framework 테스트 작성 시 반드시 따르는 정책 문서.

원칙

  1. 모든 Public API는 최소 1개의 Unit Test를 목표로 한다(이번 1차 세션은 대표 API 우선, 전체 커버리지는 이후 세션에서 확장).
  2. 버그 수정 시에는 반드시 회귀(Regression) 테스트를 함께 추가한다.
  3. 테스트는 Arrange / Act / Assert 구조를 따른다(주석으로 구간을 명시).
  4. 외부 패키지(Addressables, Localization, FishNet 등)는 가능한 Mock 또는 테스트용 Fixture를 사용한다.
  5. Performance Test는 성능 측정만 수행하며 Pass/Fail 기준을 두지 않는다(Assert 없음, Console 로그로 결과 확인).
  6. 테스트는 Runtime 코드를 변경하지 않고 검증만 수행한다.
  7. Reflection 사용은 최소화한다. DI가 필요한 System은 new로 직접 생성해 테스트하며, DI 컨테이너를 통해서만 얻을 수 있는 인스턴스(Play Mode 전용 System)는 이번 세션 범위에서 제외하고 사유를 명시한다.
  8. EditMode 테스트(Framework.Tests.asmdef, [Test])는 Unity 생명주기가 필요 없는 순수 로직에 사용한다. PlayMode 테스트([UnityTest])는 GameObject/Scene/Coroutine 등 Unity 생명주기가 필요한 경우에만 사용한다.

명명 규칙

  • 테스트 클래스: {대상클래스}Tests
  • 테스트 메서드: {메서드명}_{조건}_{기대결과} (예: HasFlag_FlagPresent_ReturnsTrue)

폴더 구조

  • Tests/TestFramework — 공통 Fixture/Base/Utility
  • Tests/Runtime/Common|Core|Patterns|Systems — Unit Test
  • Tests/Integration — System 간 연동 Test
  • Tests/Performance — Benchmark(Assertion 없음)
  • Tests/Utilities — 테스트 전용 Mock/Utility