[Unity] using NUnit.Framework;
![[Unity] using NUnit.Framework;](/_next/image?url=https%3A%2F%2Fdata.develog.develrocket.com%2Fupload%2Fdevelog%2Fuser_1776858831954%2F1785510093345-nm1501%2F_____.png&w=3840&q=75)
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.



나는 System.Collection의 리스트를 쓰고 싶었는데, 자동완성이 NUnit.Framework의 List를 찾아서 원하지 않은 using문이 생겼던 기억이 자주 있다. 당연히 이 네임스페이스에 대해서는 전혀 아는 바가 없었다.
곧 기업협약 프로젝트가 시작된다. 우리 팀에 주어진 주요 과제를 해결하기 위해서는, 게임 메카닉이 결정론적으로 동작하는지 검증하는 프로그램을 만들어야 했다. 이를 위한 검증기가 필요해졌고, 그렇게 NUnit.Framework를 다시 만났다.
이 네임스페이스는 단위 테스트를 도와주는 순수 C#의 네임스페이스다.
단위 테스트란, 주로 메서드 하나 단위의 작은 코드 단위가 의도대로 동작하는지 확인하는 것을 의미한다.
???: 그냥 PlayMode 진입해서 눈으로 확인하면 안 돼요?
안됩니다.
Unity는 자체적인 테스트 도구가 있으나, 이는 NUnit을 Unity에 맞게 커스터마이즈하여 제공되는 것이다. 즉, 우리가 Unity에서 쓰는 NUnit이 UTF다.
어트리뷰트 | 역할 |
|---|---|
[Test] | 메서드에 붙는다. 이 메서드는 테스트용이다. |
[TestFixture] | 유니티에서는 생략 가능하다. 이 클래스가 테스트 메서드를 포함함을 의미한다. |
[SetUp] | 각 테스트 실행 직전에 호출된다. |
[TearDown] | 각 테스트 실행 직후에 호출된다. |
[TestCase(...)] | 하나의 테스트를 여러 입력값으로 반복 실행한다. |
[UnityTest] | UTF 전용. 코루틴처럼 yield return으로 프레임을 넘기며 테스트한다. |
Assert.* | 역할 |
|---|---|
AreEqual(expected, actual); AreEqual(expected, actual, delta); | 두 값이 같은가? 또는 두 값이 delta의 허용 오차를 두고 같은가?(부동소수점) |
IsTrue(condition); | 참인가? |
IsFalse(condition); | 거짓인가? |
IsNull(obj); | null인가? |
Throws<ArgumentException>(Action action); | action은 예외가 나야 정상인 코드. |
어셈블리는 프로젝트 폴더 내에 .asmdef 파일로 만들 수 있고, 이 파일은 해당 모듈(네임스페이스)이 참조할 수 있는 모듈이나 규칙(unsafe 허용 등)을 정의한다. UTF는 NUnit을 참조하는 어셈블리 내에서만 작동하므로, 이 파일을 생성해야한다. 당연히 테스트를 위해 참조해야할 게임 메카닉이 정의된 모듈도 참조를 명시할 필요가 있다.
Window > General > Test Runner 에서 위의 어셈블리 파일을 자동 생성 할 수 있다.
나 같은 신입도 데이터 모델과 POCO 로직, MonoBehaviour 사이클 등을 분리할 수 있도록 도와주는 기준이 된다.
만약 기능 구현은 다 됐는데 단위 테스트가 가능한 형태가 아니라면, 뭔가 냄새가 날 것이다.
각 테스트가 독립되어있으면서도 결정론적이어야한다.
이 명제가 훼손되면 테스트 자체가 성립할 수 없다.
![[Unity] Event Trigger Component](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1786976296699-a3tu75/_____2026-08-17_231353.png)
Unity Event Trigger 컴포넌트

에픽게임즈에서 지원하는 EOS에 대해 알아보았다.
![[Unity] #if, #endif](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1786778972982-xrtzbj/_____2026-08-15_162920.png)
if, endif
![[Unity] Event Trigger Component](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1786976296699-a3tu75/_____2026-08-17_231353.png)
![[Unity] #if, #endif](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1786778972982-xrtzbj/_____2026-08-15_162920.png)