Rider

Rider 2018.1 에서 Unity unit TEST 하기

Rider 2018.1 에는  control play mode나,  bring the Unity console directly into Rider 등 신규 추가된 Unity 에디터 플러그인의 기능들이 많이 있습니다.

결국 궁극적으로는 Rider 에서 Unity 로, 또 Unity 에서 Rider 로 옮겨 다니는 불편함과 개발에 소요되는 시간을 단축하는데에 그 목적이 있습니다. 코드를 편집/수정하는 과정이라면, 코드 에디터에만 머물고 싶겠죠. Rider 를 활용하시면 보고 있는 에디터 단일 창에서 바로 디버깅하고, 로그를 확인하고 스택 트레이스(Stack Trace)가 클릭이 가능하여 바로 원하는 코드의 위치로 옮겨갈 수도 있게됩니다.

JetBrains 는 바로 컨텍스트간에 이동(Switch)하는 경험을 최소화 하고 개발하고자 하는 게임의 로직이나 더 중요한 요소들에 더 집중할 수 있어야만 더 좋은 게임을 개발할 수 있다고 믿고 있습니다. 사용하는 툴에 방해를 받아서는 안되죠. JetBrains 는 이런 경험을 더욱 극대화 하기 위해 Unity 의 Unit Test 기능을 Rider 의 Test Runner 에 연동(Integrate) 하였습니다!

이 기술의 도입으로 인해 Unity의 API들과 연결되는 Run Test 를 Rider 에서 직접 실행 할 수 있고, 이는 단일 프레임(Frame)만 단계별도 Test 할 수도 있게 됩니다. 또한 당연하겠지만, 특정 Unity Test 의 결과까지 Rider 에서 모두 확인할 수 있는 것이죠. 즉, 결과를 필터를 걸어 소팅하고, 스택 트레이스(Stack Trace) 를 이용해 원하는 코드의 위치를 자유롭게 옮겨 다니며 확인할 수 있습니다.

test_window

Unity 의 unit test 기능 자체에 대해 익숙하지 않은 사람들을 위해, 에디터 애플리케이션 인스턴스 내에서 이러한 테스트를 실행해야한다는 제약이 있습니다. 이렇게 안내 되는 이유는, Unity 가 사실 .NET 어플리케이션이 아니기 때문이죠. Unity 는 Native App 이고, Mono 기반의 스크립트 레이어입니다. 그리고 수많은 Unity 의 API 들 또한 Native API 들입니다. 이런 API 일반적인 test runner 를 실행하게 되면 아래와 같이 조금은 불친절한 화면을 보게됩니다.

1
System.Security.SecurityException : ECall methods must be packaged into a system module

이러한 호출을 모방하는 것은 불가능하지만 대신 편집기 인스턴스에서 테스트를 실행해야합니다.

unity_testrunner_window

다행스럽게도 새로운 Unity Editor 플러그인이 딱 필요한 기능을 수행합니다. 바로 Rider 가직접 Run test 요청을 받아서 테스트 후 다시 결과를 Rider 로 보내어 Rider 안에서 바로 진행사항과 결과를 실시간으로 확인 하므로써  표준 Test Runner 에 완벽하게 통합 할 수 있습니다 .

Unity 지원은 유닛 테스트 경험과 완벽하게 통합됩니다. 우리는 코드에서 단위 테스트를 발견하고 편집기 내부에서 테스트 클래스와 메소드를 강조 표시합니다. 거터 아이콘을 클릭하거나 AltEnter를 누르면 테스트를 실행하는 데 사용할 수있는 메뉴가 표시됩니다.

nunit_test

메뉴에 Debug 와 Run이 표시 되는 것을 확인하실 수 있습니다. 메뉴에서 Debug 항목이 활성화 되어 있지만 현재 디버깅은 사실 지원되지 않습니다 . Debug 를 선택 하면 단순히 테스트가 실행됩니다. 쉬운 해결 방법은 메인 창의 우측 상단에있는 일반 Debug 버튼을 통해 편집기를 연결 한 다음 테스트를 실행하는 것입니다. 그러면 중단 점을 설정하고 정상적으로 디버그 할 수 있습니다. 가능한 한 빨리 디버깅이 빠른 시일 내에 활성화 되기를 기대합니다.

debug_toolbar

 

 

에디터에서 직접 테스트를 실행하는 것 만이 기능을 사용하는 모든 이유는 아니죠. 이 뿐만 아니라 Rider 의 일반적인 단위 테스트 도구를 추가로 사용할 수 있습니다. 프로젝트 또는 모든 클래스를 테스트  할 수도 있고, 또는 하나의 테스트만 실행할 수도 있습니다.  심지어 도구(Tool) 창에 테스트가 표시되는 방법을 그룹화하고 통과(passed), 실패(failed), 건너 뛴
(skipped) 상태를 기준으로 필터링 할 수도 있습니다.

그러나 무엇보다도, 결과의 아웃풋이 일반 text 형태로 떨어지는 Unity Editor 와는 다르게 Rider 에서는 테스트 결과를 분석(parse)하고  스택 추적(stack traces)을 만들거나 클래스 나 메소드 이름에 하이퍼 링크를 하기도 합니다.

stack_trace

또한 Rider 는  전통적인 nunit Test ]  속성 뿐 아니라 UnityTest ] 속성으로 표시된 테스트를 지원 합니다.

unity_test

마지막으로 Rider 는 새로운 테스트 클래스를 신속하게 작성하기위한 파일 템플릿을 포함합니다.

file_templates

 

통합 테스트 러너는 Test Runner 가 Unity 에디터에 처음 통합 된 Unity 5.6 이상에서 지원됩니다. Rider 는 Unity 5.6 이전 유니티 테스트를 특별히 지원하지는 않지만 표준 nunit 테스트로 발견되는 테스트는 실행할 수 있습니다.

이 포스트와 Rider 2018.1의 다른 새로운 기능에 대한 귀하의 의견을 듣고 싶습니다. 여기에 의견을 남기고 기능 요청 및 문제를 GitHub 또는 YouTrack에 추가 할 수 있습니다 . 물론 Rider  2018.1 을 다운로드 하고 사용해 보는 것도 잊지 마세요!

 

The Drive to develop
JetBrains 팀

 

해당 포스트는 영문 내용을 변역하여 작성되었습니다.

출처 : https://blog.jetbrains.com/dotnet/2018/04/18/run-unity-tests-rider-2018-1/

image description

Discover more