C# 프로젝트 - MTP (Microsoft Testing Platform)로 전환

 

C# 프로젝트 - MTP (Microsoft Testing Platform)로 전환

error Testing with VSTest target is no longer supported by Microsoft.Testing.Platform on .NET 10 SDK and later. If you use dotnet test, you should opt-in to the new dotnet test experience. For more information, see https://aka.ms/dotnet-test-mtp-error

오류: .NET 10 SDK 이상 버전의 Microsoft.Testing.Platform에서는 VSTest 대상을 사용한 테스트가 더 이상 지원되지 않습니다. dotnet test를 사용하는 경우, 새로운 dotnet test 환경을 사용하도록 설정해야 합니다. 자세한 내용은 https://aka.ms/dotnet-test-mtp-error 를 참조하세요.



어느날... 테스트 실패

별로 하는 것 없이 라이브러리 버전업하고...

dotnet test를 돌리니... 위와 같은 메시지가 출력되었다.

그래서 일단은 MS테스트로 바꿔보고 문제 없어서 나중에 후기 써야지...하고 묶혔다가...

다시 재현을 해보려니 잘 안된다...😅😅


 

오류 재현 시도

MTP로 바꾼걸 다시 레거시 VSTest로 돌리기 위해... git으로 하드리셋해서 옛날 환경으로 맞춘다음에... 돌렸는데...

VSTest로 제대로 되는 현상...

맨위에 언급한 오류 메시지를 다시 띄울려고 했는데... 재현을 할 수가 없네... 😂😂

시스템에 설치된 .NET SDK 목록


버전도 현시점 2026년 9월 기준 최신 10.0.401 버전 맞고 기본이 그걸로 실행되고 있는데...

이상하게 이전과 다르게... 오류 안나고 VSTest로 잘 수행된다..

VSTest 아답터로 잘돌아감


다시 최신 Pull 받아서... MTP 적용한 소스로 그대로 다시 테스트해도 역시 잘됌.

Pull 받아서 MTP 변경상태로 돌리면 MTP로 잘 수행됨 🤔


지금 상태로 두 환경모두 잘 지원이 되는데... 

그러면 예전에 MTP 지원중단 경고가 왜 나왔지? 좀 미궁에 빠졌다..

MTP로 전환은 해두었으니 문제는 없겠지만... 이 상황이 좀 이해는 안감..😂😂

 

 

💡MTP(Microsoft.Testing.Platform)를 사용하는 이유

예전 방식인 VSTest는 dotnet test를 실행하면 VSTest 러너가 따로 뜨고, 그 안에서 테스트 어댑터를 통해 xUnit 테스트를 찾아 실행하는 구조다. 동작은 안정적이지만 구조가 크고 무거운 편이다.

MTP는 테스트 프로젝트 자체가 하나의 실행 파일(Exe)처럼 동작한다. 그래서 테스트 실행 구조가 단순하고, VSTest 방식보다 가볍고 빠른 실행을 기대할 수 있다.

xUnit v3에서도 이런 MTP 기반 실행 방식을 권장한다.

 

 

MTP 적용을 위해 변경한 내용

테스트 프로젝트의 csproj에서 다음 디펜던시 지움

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />

 

Microsoft.NET.Test.Sdk, xunit.runner.visualstudio 이거 두개를 지웠다.

1. Microsoft.NET.Test.Sdk

".NET 테스트 프로젝트를 VSTest 기반 도구 체인에 연결하는 실행 인프라(Bridge)"

테스트 프로젝트에 VSTest 기반 실행에 필요한 MSBuild targets/props와 테스트 플랫폼 구성 요소를 추가한다. 이를 통해 dotnet test, Visual Studio, Rider, VS Code 같은 도구가 프로젝트를 테스트 프로젝트로 인식하고, VSTest 실행 흐름 안에서 테스트 어댑터를 로드하여 테스트를 발견/실행할 수 있게 해준다. 단, 이 패키지 자체가 xUnit, NUnit, MSTest의 테스트 문법을 이해하는 것은 아니다. 각 테스트 프레임워크를 이해하려면 별도의 어댑터가 필요하다.

2. xunit.runner.visualstudio

"VSTest가 xUnit 테스트를 이해할 수 있게 해주는 어댑터(Adapter)"

VSTest 엔진은 xUnit의 [Fact], [Theory] 같은 테스트 규칙을 직접 알지 못한다. xunit.runner.visualstudio는 VSTest 어댑터로 동작하여 xUnit 테스트를 발견하고 실행하는 방법을 VSTest에 제공한다. 즉, VSTest 입장에서는 이 어댑터를 통해 xUnit 테스트 목록을 찾고, 각 테스트를 실행할 수 있게 된다

 

 

global.json 파일 생성

{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}

프로젝트 루트에다 global.json 파일 만들어서 테스트러너로 MTP를 사용할 것이라고 정의했다.

 

 

각 IDE 환경에서 테스트 (Rider, Visual Studio 2026, VSCode)

잠깐.. Rider에서는 이거 지우고 IDE UI 상의 테스트 탐색기에서 아래와 같이 제대로 보이는지 확인은 했는데...

Rider에서 테스트 탐색기 잘 표시됨..👍

Visual Studio에서는 잘 나왔는지 확인은 안해봤는데...😅 지금 해봐야 될 것 같다.

Visual Studio 2026에서도 깔끔하게 잘 나옴.. 👍👍


다행이 잘 나온다... 근데.. Visual Studio는 프로젝트를 열때.. 탐색기에서 폴더로 열지말고 루트의 slnx 파일 클릭해주는게 나은듯... 폴더로 열면 C# 프로젝트로 바로 인식을 하지 않음. 😂

여기까지 왔으면... VSCode로도 당연히 잘되겠지만...

한번 잘되나보자..😊

VSCode + C# Dev Kit에서도 잘 되긴됨.. 근데 다른 부분에서 문제가..🥲


되기는 되는데... 안정성은 Rider나 Visual Studio가 나을 것 같다.

 

 

다시 오류 재현

나중에 오류 재현을 할 수 있긴 했다..

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />

위의 레거시 테스트 라이브러리가 테스트 프로젝트에서 제거된 상태에서

테스트 실행기로 MTP를 사용하겠다고 선언한 global.json을 제거하니...


오류 메시지를 재현할 수 있었다.

 

 

VSCode + C# Dev Kit에서의 다른 문제

VSCode + C# Dev Kit 환경에서

csproj 파일를 에디터 창에다 열면 문제가 있다고 인식한다.

C# 프로젝트 설정파일을 열면 이상하게 오류뜸..💢

The expression "[MSBuild]::GetTargetFrameworkIdentifier(net10.0)" cannot be evaluated. Could not load file or assembly 'NuGet.Frameworks, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The located assembly's manifest definition does not match the assembly reference. (0x80131040)

dotnet CLI환경이나, Visual Studio 2026이나 Rider에서는 문제가 없는데....

C# Dev kit 확장 문제 같음...😅



의견

오류 메시지 재현도 해보았고...

2개 C# 프로젝트들을 MTP로 변경해놔서, 앞으로 별 문제는 없을 것 같다.

 

VSCode의 오류가 좀 찝찝하긴한데...

이 문제는 앞으로... C# Dev Kit 개발하시는 분들이 해결해주시겠지...😅😅😅

댓글

이 블로그의 인기 게시물

한글 2005 가정용

V3Pro 2002 Deluxe

전자정부 프레임워크 v5.0 교육자료 IDE, 다른 드라이브에 설치하는 완벽 가이드