JetBrains Rider 2023.2.3에서 NUnit 4 지원 안 됨

JetBrains Rider 2023.2.3에서 NUnit 4 지원 안 됨

NUnit 4

2023년 11월 26일에 NUnit 4.0.0이 릴리즈되고 바로 이틀 전인 12월 2일에 4.0.1이 릴리즈되었다.링크 문제는, 꽤 오랫동안 진행한 이전 프로젝트에서 xUnit을 써왔기에 이러한 사실을 전혀 모르고 있었다는 것이다.

최신 버전과 서드파티 IDE의 문제

문제는 이런 변경 사항에 대해 아무것도 모른 채 기존 .NET Framework 프로젝트를 .NET 7으로 마이그레이션하다가 테스트 프로젝트가 작동하지 않는 상황에 직면하게 되었다는 것이다.

분명 코드도 정상이고, IDE도 정상이고, NuGet 패키지도 잘 설치되었으며 dotnet test로 테스트를 실행하면 잘 되는데 JetBrains Rider의 Unit Tests Explorer에서 테스트를 감지하지 못하는 것이었다.

Visual Studio에서는?

이럴 때 뭘 해야 할까 생각해보다가 일단 Visual Studio에서 돌려보기로 했다. 왜냐하면 dotnet test는 잘 돌아갔으므로 Visual Studio에서도 되지 않겠냐는 생각이 들었기 때문이다. 또, Visual Studio가 켜지고 ReSharper를 로드하는 모습을 보니 Visual Studio의 자체 단위 테스트 기능과 ReSharper를 비교해보면 더 확실히 할 수 있지 않을까 하는 생각이 들었다.

이 때까진 몰랐지. 이게 함정이 될 줄은.

아무튼 Visual Studio가 로드되고 프로젝트를 연 뒤, 우선은 ReSharper의 단위 테스트 기능을 먼저 실행하려 시도해봤다. 예상대로 작동하지 않는다. 증상 역시 똑같았다. 아예 단위 테스트 세션 자체가 생기질 않는다. 왜? 감지된 단위 테스트가 없으니까.

그래서 이제 Visual Studio의 자체 단위 테스트 윈도우를 열어봤더니, 아니나 다를까 정상적으로 로드되고 단위 테스트도 문제 없이 진행되는 것이 아닌가?

성급했던 결론

이게 함정인 줄 몰랐던 나는 *‘라이더가 문제구나!’*라는 생각을 굳힌 채 구글링에 들어갔다. 그게 아니었는데…

애초에 잘못된 방향으로 시작한 구글링은 나를 더욱 더 미궁 속으로 빠지게만 만들었다. 일단, 대부분의 글이 4년보다 오래 전에 작성된 것이라서 정확한 비교가 힘들었고, 비교적 최근에 작성된 글이랍시고 찾은 건 해답이 아닌 두 번째 함정이었다.

그 글에서 말하길, 최근 닷넷 배포와 라이더와의 충돌이 있어서 이런 문제가 생길 수 있다고 하였다. 글도 비교적 최신이었다.
이어서 해당 글에서는 Visual Studio Installer를 통해 업데이트하지 않은 자신의 동료 컴퓨터에서는 정상 작동하지만 본인 컴퓨터에서는 작동하지 않는다는 내용을 남겼다.

근데, 가만 생각해보니 나 역시 Rider를 주력으로 사용하며 Visual Studio Installer를 킨지 오래 되었다는 걸 떠올렸다. 근데 왜 안 될까 생각해보다가, 그렇다면 역으로 업데이트를 해버리면 어떨까? 하는 멍청한 결론에 도달하게 되었다.

그래서 오랜만에 Visual Studio Installer를 통해 최신 버전으로 업데이트를 진행하고, 하는 김에 .NET 8 SDK도 설치한 뒤 재부팅했다.

그리고 Rider를 켜보니… 안 된다.

하나씩 하나씩 맞춰지는 퍼즐

그러던 중, 어떤 글에서 sln 파일의 프로젝트 GUID가 겹쳐서 동일한 증상이 발생했었다는 내용을 발견했다. 내 경우에는 모든 프로젝트의 GUID가 잘 구분되어 있었기에 그냥 넘어가도 됐으나 내가 모르는 어떤 현상, 예를 들어 Rider/ReSharper 캐시 등에서 충돌이 날 수도 있지 않나 하는 오만하고 멍청한 생각에 그래, 확실히 하자라 생각하며 솔루션에서 모든 프로젝트를 지우고 다시 추가하려고 했다.

그런데 생각해보니 테스트 프로젝트에는 클래스 하나에 메서드 하나뿐이 없는데, 확실히 할 거면 아예 지우고 추가하는 게 낫다는 생각이 들어서 테스트 프로젝트는 아예 디스크에서 지우고 다시 만들었다.

NUnit 버전 문제 발견

물론 다시 프로젝트를 만들 때엔 Rider의 새 프로젝트 - 테스트 프로젝트 템플릿을 사용하였다. 그리고 이게 정답이었다.

이렇게 테스트 프로젝트를 만들고 나니 NUnit, NUnit 3 Test Adapter 등 딸려오는 모든 패키지들이 오래되어 업데이트 표시가 떠 있었다. 아무 생각 없이 하마터면 그대로 전체 업데이트를 진행할 뻔 했다가, 순간 한 생각이 번뜩이며 지나갔다. 설마 버전 때문인가?

거의 한 시간을 이 문제를 해결하자고 붙잡고 있었기에 조금 더 시간이 드는 것쯤이야 아무래도 상관이 없어진 나는, 확인을 해보기로 했다.

솔루션 정리, 리빌드, Unit Tests… 어? 보이네?
프로젝트 우클릭… 어? 메뉴가 활성화가 돼있네?
Tests 메뉴… 아? 다 활성화가 돼있네?

물론 단위 테스트 실행도 잘 되었다.

그럼 대체 문제는 뭐였을까?

일단, 모르겠다. 아니, 다시 말하자면 정확한 원인은 모르겠다. 하지만 몇 가지 추측은 할 수 있다.

일단 공식 홈페이지의 릴리즈 항목을 보면 다음과 같이 안내되어있다.

This release is an incremental improvement of version 3, and can be used with the same runners as before, although a minor upgrade might be needed for some.

For the NUnit3TestAdapter, you will need version 4.5 to run tests with NUnit 4.

그리고 실제로도 Visual Studio에서는 문제 없이 작동했었다. 그래서 추측해보면, Rider가 아직 NUnit 4에 대한 지원을 하지 못한 게 아닌가 싶다.

결론

아직 JetBrains Rider(2023.2.3)에서 NUnit 4를 사용할 수 없다. Rider가 업데이트 되던지 NUnit 3 Test Adapter가 업데이트 되던지 아무튼 호환되는 패치가 나오기 전까지는 사용할 수 없을 것으로 보인다.

어찌됐던 NUnit 4와 NUnit 3.14.0의 차이가 그리 크지는 않기 때문에, 나는 당분간 3.14.0을 그대로 쓰려고 한다.

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

USB를 뒤는 괜찮은데 앞에 꽂으면 인식이 힘들다?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭