[unit-testing] Visual Studio 2017에서 단위 테스트를 찾을 수 없음

VS 2017을 설치 한 이후로 어려움을 겪고 있습니다. 이제 단위 테스트는 “dotnet test”명령 줄에서만 실행됩니다.

내 프로젝트는 .NET Core 1.1.1입니다. 1.1.1 용 SDK 및 프레임 워크 업데이트가 설치되어 있습니다.

MSDN에서 샘플 ( https://msdn.microsoft.com/en-us/library/ms182532.aspx )을 시도했지만 정확히 같은 방식으로 실패합니다.

테스트 및 기본 프로젝트를위한 모든 NuGet 패키지가 최신 버전입니다. 그리고 테스트 프로젝트와 기본 프로젝트 모두 오류없이 빌드됩니다. 테스트는 명령 행에서 성공적으로 실행됩니다.

그렇다면 VS 2017에서 실행하기 위해 단위 테스트를받은 사람이 있습니까?

고마워, 존


업데이트-연장

다음은 GitHub에서 작동하지 않는 간단한 테스트 프로젝트의 예입니다 . 이것은 xUnit의 예이지만 MS 테스트에 내장 된 NUnit 및 Visual Studio를 사용해 보았습니다. 어떤 테스트 또는 어떤 변경을 수행하더라도 VS 테스트 러너가 테스트를 찾을 수 없습니다.

내가 시도한 것

  • VS 테스트 캐시 파일 삭제 DEL %TEMP%\VisualStudioTestExplorerExtensions
  • VS 다시 시작
  • 테스트 탐색기 닫기 / 열기
  • xUnit이 설치된 경우 Microsoft.DotNet.InternalAbstractions( SO post 참조 )
  • NUnit의 경우 어댑터가 NUnit 패키지와 동일한 버전 (3)으로 설치되어 있는지 확인
  • test -> test settings -> default processor architecture x86으로 설정

질문
VS 테스트 탐색기가 성공적으로 단위 테스트를 찾 거나 주어진 예제에서 문제를 보여주는 VS2017 (.csproj 프로젝트 파일)의 .Net Core 1.1.0 솔루션의 실제 예제를 제공하십시오.



답변

필자의 경우 테스트 어댑터와 테스트 프레임 워크 를 업그레이드 해야한다는 것이 밝혀졌습니다 . 끝난.

NuGet 패키지 관리자를 사용하는 예 :

여기에 이미지 설명을 입력하십시오


답변

이것은 방금 나에게 도움이되었습니다 (뭔가 손상된 작업 공간을 변경 한 결과인지 모르겠습니다).

% TEMP % \ VisualStudioTestExplorerExtensions에서 VS 테스트 캐시 파일을 삭제하고 VS2017을 다시 시작하십시오.


답변

.NET Core 용 테스트 어댑터 용 API는 Visual Studio 2017 릴리스와 project.json형식 에서 형식으로 이동 함에 따라 변경 csproj되었습니다. 이로 인해 기존 dotnet-test-*어댑터가 dotnet-test-nunit더 이상 사용되지 않습니다.

어댑터가 업데이트되었지만 Visual Studio 또는 명령 줄에서 테스트를 설정하고 실행하는 방법 dotnet test에 따라 테스트 프로젝트에서 다른 참조 가 필요합니다. 조심 당신이에 해당 참조 패키지를 발견 한 문서의 dotnet-test-*가 구식이되어 있기 때문에 형식입니다.

먼저 테스트 프로젝트는 .NET Core 또는 .NET Framework와 같은 특정 플랫폼을 대상으로해야합니다. 테스트중인 코드가 .NET 표준 인 경우에도 .NET 표준을 대상으로 할 수 없습니다 . 테스트 대상은 테스트를 실행할 플랫폼을 나타 내기 때문입니다. .NET Standard는 많은 플랫폼에서 실행될 수 있다는 점에서 PCL (Portable Class Library)과 유사합니다.

다음으로, Microsoft.NET.Test.Sdk선택한 테스트 프레임 워크 및 호환 가능한 테스트 어댑터 에 대한 참조를 추가해야합니다 . NUnit의 경우 참조는 다음과 같습니다.

<itemgroup>
    <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>
    <packagereference Include="NUnit" Version="3.7.1"></packagereference>
    <packagereference Include="NUnit3TestAdapter" Version="3.8.0"></packagereference>
</itemgroup>

위의 의견은 추가,

<ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

꼭 필요한 것은 아니지만 도움이 될 수 있습니다. 테스트를 통해 프로젝트를 신속하게 찾을 수 있도록 Visual Studio에서 모든 단위 테스트 프로젝트에 자동으로 추가됩니다.

테스트가 Visual Studio에 나타나지 않으면 먼저 솔루션을 닫고 다시 여는 것입니다. Visual Studio에는 프로젝트를 편집 할 때 프로젝트의 변경 사항을 감지하지 못하는 버그가 있습니다.

자세한 내용 은 Visual Studio 2017에서 NUnit을 사용하여 .NET Core 테스트를 참조하십시오.


답변

나는 같은 문제가 있었고 다음을 수행하여 작동하도록했습니다. :

  • 먼저 열려있는 모든 Visual Studio 인스턴스를 닫고이 폴더를 삭제하십시오. % TEMP % \ VisualStudioTestExplorerExtensions. ( Visual Studio로 테스트 실행 )
  • Nuget 패키지 관리자로 이동하여 Microsoft.NET.Test.Sdk (15.3.0-preview-20170425-07)를 먼저 설치 한 다음 xunit.runner.visualstudio (2.3.0-beta1-build1309)를 설치하십시오. 테스트를 감지하기 위해 최신 VS 2017을 설치하기 위해 설치해야하는 모든 패키지를 보려면 첨부 된 Nuget 스크린 샷을 참조하십시오.너겟 스크린 샷

답변

테스트 클래스 만들기 위해 잊고 공공 방지가 발견 될 내부 테스트 방법의를

기본 xUnit 프로젝트가 있고 샘플 UnitTest1.cs를 삭제하여 컨트롤러 테스트 클래스로 바꾸고 몇 가지 테스트로 대체했지만 찾지 못했습니다.

간단히 말해 xUnit, Test.Sdk, xUnit.runner 패키지를 업데이트하고 프로젝트를 다시 빌드 한 후 빌드 오류가 발생했습니다.

오류 xUnit1000 테스트 클래스는 공용이어야합니다

고맙게도 업데이트 된 버전 에서이 예외가 발생하여 문제가 발생하지 않았습니다.

테스트 클래스를 공개 수정하여 문제가 수정되었습니다.


답변

필자의 경우 테스트 프로젝트를 x64Architecture로 대상으로 설정하고 테스트 설정 Architecture (test-> Default Processor Architecture)가 변경되었습니다 x86. 그들은 일치하지 않았다.

테스트 설정 아키텍처를 다시 설정 한 후 x64다시 빌드하면 모든 테스트가 다시 발견되었습니다.


답변

VS 2017에서 UnitTest를 찾는 데 문제가있었습니다. John이 요구 한 정확한 문제는 아니었지만 Google에서 찾은 첫 번째 결과 였으므로 문제를 공유하고 싶었습니다.

VS2010에서 VS2015, VS2015로 돌아가는 레거시 솔루션이 있습니다. 이제 VS2017에서는 [TestMethod]속성의 네임 스페이스 가 변경된 것 같습니다 .

사용하기 전에

Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0

프로젝트에서 새 Test.dll을 만들었으며 기본적으로 사용되는 것입니다.

Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0

그래서 내 솔루션은 VS2017 내에서 새로운 UnitTest 프로젝트를 만드는 것이 었습니다. 이전 테스트 프로젝트의 어셈블리 참조를 변경해도 효과가있을 수 있습니다. VS2017은 새로운 참조로 이러한 단위 테스트를 발견했습니다.