픽셀 102개가 어디였는지부터 봅니다
엔딩 화면 스크린샷 테스트가 픽셀 102개 차이로 실패했습니다. 처음에는 렌더링이나 게임플레이가 바뀐 줄 알았습니다. 두 이미지를 겹쳐 보니 장면, 배치, 제목, 연출이 전부 같고 다른 곳은 한 줄이었습니다. 진행 카운터가 기준 이미지에서는 2/2, 새 실행에서는 1/2였습니다.
원인은 코드가 아니라 기준 이미지였습니다. 그 이미지는 두 엔딩을 모두 본 세이브 상태에서 찍혔고, 새 테스트는 깨끗한 프로필에서 시작했습니다. 이 사건은 Ren'Py로 만든 프로젝트에서 나왔지만 Unity에서도 같은 형태로 재현됩니다. 저장 데이터를 읽어 화면에 숫자를 찍는 구조면 조건이 똑같습니다.
Unity에서 같은 함정이 생기는 자리
PlayerPrefs나 세이브 파일에서 읽은 값을 화면에 그리는 UI- 업적, 갤러리 잠금, 수집률처럼 누적되는 표시
- 이전 테스트가 남긴 상태를 다음 테스트가 물려받는 실행 순서
[SetUp]
public void SeedOppositeEnding()
{
PlayerPrefs.DeleteAll();
PlayerPrefs.SetInt("ending_b_unlocked", 1); // A 테스트는 B를 미리 심습니다
PlayerPrefs.Save();
}규칙 하나로 실행 순서 의존을 끊습니다
엔딩 A 테스트는 B를 미리 열어 두고, 엔딩 B 테스트는 A를 미리 열어 둡니다. 그러면 어느 테스트든 완료 시점에 2/2에 도달하니 실행 순서와 이전 상태에 흔들리지 않습니다. 카운터를 화면에서 지우는 것보다 이 방법이 낫습니다. 카운터도 검증 대상이기 때문입니다.
$ dotnet test --filter EndingCard
EndingCardTests.ending_a_matches passed
EndingCardTests.ending_b_matches passed다음에 같은 자리에서 걸릴 후보는 해상도입니다
기준 이미지와 실행 해상도가 다르면 이번처럼 한 줄이 아니라 프레임 전체가 어긋납니다. 증상이 훨씬 크니 헷갈리지는 않지만, 테스트에서 해상도를 고정해 두면 아예 안 겪습니다.
공식 문서 대조
검증일
Unity 공식 문서와 본문의 코드·절차를 대조해 공개 준비 상태로 전환했습니다. 별도 Unity 프로젝트나 실기기에서 직접 재현한 결과는 아니며, 특정 버전·기기 문의가 들어오면 해당 환경에서 후속 확인합니다.