Visual Studio 2017에서 단위 테스트를 찾을 수 없음


213

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 솔루션의 실제 예제를 제공하십시오.


VS2017이 모든 필수 패키지를 설치하지는 않는다는 것을 알았습니다. MonoGame을 이전 PC에서 새로 설치된 Windows 10 및 VS 2017이 설치된 새 PC로 옮기려고 할 때 패키지 누락에 대한 이상한 오류가 발생하기 시작했습니다. VS2017과 함께 VS2015를 설치하면 모든 문제가 사라졌습니다. VS2015를 추가로 설치하십시오.
Mateusz

2
Visual Studio 설치 관리자를 사용하여 테스트 패키지를 설치해보십시오
Markiian Benovskyi

VS 2017에 모든 환경 변수가 올바르게 설정되어 있는지 확인하고 있습니다.
John Pezzanite

1
NUnit의 경우 어댑터에 NuGet 패키지를 사용해야하며 3.8.0-alpha1 이상이어야합니다.
Rob Prouse

2
필자의 경우 app.config테스트 프로젝트에 stackoverflow.com/a/47497668/67824 파일 만 존재했습니다 .
하드 슈나이더

답변:


189

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

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

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


4
이것은 나에게도 도움이되었습니다! 솔루션 레벨에서 "Nuget 패키지 관리"를 수행하고 이것이 필요한 모든 프로젝트에 대해이를 수행 할 수 있습니다. 그런 다음 "명확한 참조"오류가 발생할 수 있습니다. 이러한 경우 참조에서 이전 DLL (Microsoft.VisualStudio.QualityTools.UnitTestFramework)을 제거하십시오
Prashanth Subramanian

48
이러한 것들은 NuGet 패키지가 아닌 Visual Studio의 확장이어야합니다.
Jaider

1
우리는 오래된 MSTest 프로젝트가 많이 있으며 NuGet 패키지로 옮겼다는 것을 알지 못했습니다. 이것은 나를 위해 그것을 해결했습니다. 원래 VS 테스트 탐색기가 테스트를 찾을 수 없다는 것을 알기 전까지는 새로운 ReSharper 릴리스의 버그라고 생각했습니다.
David Anderson

1
이 답변의 상태와 똑같은 일을했습니다. VS2017 솔루션에서 MSTest 프로젝트를 추가하고 몇 가지 테스트를 추가했지만 솔루션을 빌드하면 다음과 같은 결과가 나타납니다. 따라서 테스트 프로젝트의 경우 NuGet Package Manager (솔루션 수준에서도 가능)에서 MSTest.TestAdapter 및 MSTest.TestFramework를 v1.1.18에서 v1.2.0으로 업데이트했습니다. 그런 다음 빌드를 수행 한 후 이제 테스트가 테스트 탐색기에 나타납니다.
커쇼

1
나를 위해 훌륭하게 일했습니다. 특정 테스트 프로젝트를 위해 VS2017의 nuget 패키지 관리자로 가서 nunit 등과 같은 다양한 패키지를 업데이트 한 다음 빌드> 재구성 및 모두 괜찮 았습니다.
Tahir Khalid

126

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

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


4
이것은 나중에 한 번만 작동했습니다. (이 시간) 나를 위해 고
쳤던

24
어디에서 %TEMP%명령 창을 가져 와서 궁금해하는 사람echo %TEMP%
mike123

21
/ : 폴더 온도에 존재하지 않습니다
더글러스 Gaskell

그런 행동의 원인은 무엇입니까?
Mykhailo Seniutovych

1
액세스 % 임시 %로 가장 쉬운 방법은 + R 및 유형 % TEMP % 승리하는 것입니다
PontiusTheBarbarian

58

.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 테스트를 참조하십시오.


2
.NET Standard가 아닌 .NET Framework를 대상으로 설정했습니다. 감사.
Ben Griswold

7
해당 프로젝트에서 Microsoft.NET.Test.SDK 참조가 누락되어 표시에 의존한다는 표시가 없습니다. 너겟 콘솔을 통해 추가하고 모든 것이 작동하기 시작했습니다. 참조 목록에 감사드립니다!
GWhite

이 폴더를 동료에서 내 임시 디렉토리로 복사하고 VS를 다시 시작해야했습니다. % TEMP % \ VisualStudioTestExplorerExtensions \ MSTest.TestAdapter.1.1.18
Heiner

Target Framework를 변경하면 어떻게 netstandard 2.0 프로젝트를 테스트 할 수 있습니까? 프로젝트 netstandard2.0이 프로젝트에서 참조 할 수 없기 때문에 나는 tagets이 net46 것을 더 이상 컴파일 할 수 없습니다
Jerome2606

1
이것은 나를 위해 일했습니다. 자세한 솔루션에 감사드립니다.
Talha Ashfaque 2016 년

42

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

  • 먼저 열려있는 모든 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 스크린 샷을 참조하십시오.너겟 스크린 샷

35
% Temp % \ VisualStudioTestExplorerExtensions를 삭제하는 것으로 충분했습니다.
Juan Pablo Gomez

응 그냥 삭제하고 VS를 다시 시작하면 해결되었습니다.
Juan Carlos

누구든지 처음에 이것을 일으키는 원인을 알고 있습니까? 지금 나에게 두 번 발생했지만 폴더를 삭제하고 VS를 다시 시작하면 효과가 있습니다. 그냥 이상해
RubyHaus

@PmanAce-실제로 했어요. 두 개의 서로 다른 TFS 인스턴스 (프로젝트 당 하나씩)를 사용하고 있으므로 프로젝트를 전환하면 작업 영역이 자동으로 변경됩니다.
RubyHaus

폴더를 삭제하고 너겟을 추가하면 효과가있는 Microsoft.NET.Test.Sdk것 같습니다. StackOverflow 감사합니다. (.NET Framework WebApi 2 솔루션)
bkwdesign

40

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

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

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

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

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

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


6
왜 다운 투표를했는지 확실하지 않지만 모닝 커피 100 % 전에 이것은 나에게 간과되었습니다.
Andrei

1
이 질문 / 문제에 대한 다른 모든 답변을 시도해 보았습니다.
FastTrack

3
저것은 엄청나게 창피하지만 .. 웃기는 것은 당신이 VS2017에서 테스트 스위트 케이스를 작성하는 경우는 것입니다 하지 생성] public당신이 추가 할 때까지 그것을 발견되지 않도록, 클래스,하지만 그냥 클래스를 public식별자.
briosheje

물론이야. 내 나쁜-mstest 에이 기능이 있어야합니다.
Crismogram

10

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

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


vs2017에서 메뉴 테스트에서의 설정 -> 테스트 설정 -> 기본 프로세서 아키텍처
IcyBrk

8

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은 새로운 참조로 이러한 단위 테스트를 발견했습니다.


슬프게도, 심지어 새로운 단위 테스트 프로젝트는 나를 위해 그것의 테스트 쇼를하지 않습니다 /
더글러스 Gaskell

7

MSDN에서 구식 기사를 읽지 마십시오. .NET Core 관련 자료는 docs.microsoft.com에 있습니다.

https://docs.microsoft.com/en-us/dotnet/articles/core/testing/

일반적으로 단위 테스트 사례를 포함하려면 .NET Core 콘솔 앱이 필요합니다.


고마워요, 렉스 이 기사가 올 바르면 .NET Core를 테스트하는 유일한 방법은 명령 줄에서 수행하는 것입니다. 따라서 VS 2015에서 테스트를 실행하는 데 대한 모든 VS 통합을 잃어 버렸습니다. 맞습니까?
John Pezzanite

xUnit.net 또는 MSTest를 사용합니까?
Lex Li

@ JohnPezzanite 당신은 당신이 한 일 (아마도 GitHub 저장소)을 더 많이 보여줘야합니다. GitHub에는 완벽하게 작동하는 프로젝트가 있으며 다른 많은 프로젝트도 있습니다.
Lex Li

제공된 줄의 예제를 따르십시오. 예제에서와 같이 Microsoft의 단위 테스트와 xUnit을 사용하여 .NET 표준 및 .NET Core로 시도했습니다. .NET 표준은 VS 2017과 통합되며 .NET Core는 명령 줄에서만 실행됩니다. 그러나 나는 위에서 언급 한 것을 반복하고 있습니다. Microsoft가 모든 .NET Core 단위 테스트 통합 양식 VS 2017을 제거한 것 같습니다.
John Pezzanite

@JohnPezzanite는 GitHub.com/lextm/sharpsnmplib 및 NetStandard 솔루션을 테스트 합니다.
Lex Li

6

나를 위해 문제는 실수로 내부 클래스에 테스트 케이스를 배치했다

[TestClass]
  internal class TestLib {
}

테스트 케이스가 식별되지 않는 원인이되었습니다.


5

올바른 Microsoft.NET.Test.Sdk를 사용하고 있는지 확인하십시오.

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />

시험판을 사용하지 마십시오. 또는 라이브러리가 아닌 콘솔 앱으로 변경해야합니다. 비슷한 문제가 있지만 최신 릴리스 (15.0.0)에서는 다시 작동하기 시작합니다.

또한 다음을 추가해야 할 수도 있습니다.

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

그러나 나는 그것이 필요하다고 생각하지 않습니다.


이것은 어떤 파일에 있습니까? 내 프로젝트 (* .csproj) 파일에서 "Service Include"부분을 찾을 수 있지만 PackageReference는 찾을 수 없습니다.
Chris Bennet

* test.csproj 파일의 @ChrisBennet
Evgeni Nabokov 2016

1
@ evgeni-nabokov가 맞습니다. 이러한 모든 변경 사항은 [project] .test.csproj 파일에 있습니다. 솔루션에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "[project] .test.csproj 편집"을 선택하십시오. 예를 참조하십시오 : github.com/RenetConsulting/angularcore.net/blob/master/Business/…
Alex Altotsky

5

OP가 체크리스트에 이것을 나열했지만 Visual Studio 2017을 새로 설치하고 새 프로젝트를 설정하는 동안 그 점을 간과하기 쉽습니다. 그렇다에서 NUnit과 프로젝트 템플릿NUnit과 프레임 워크 한 요구를 NuGet 명령을 사용하여 예를 들어, 별도로 NUnit과 어댑터를 설치합니다 Install-Package NUnit3TestAdapter -Version 3.9.0. 그 후 Visual Studio Community 2017은 아무런 문제없이 단위 테스트를 시작했습니다.


1
이것은 나를 도왔다!
YvesR

세상에, 이것은 나를 위해 그것을했다. 바운티로 당신을 흠뻑 적실 수 있다면 요.
Ash

이것은 나를 위해 일한 유일한 솔루션이었습니다. 감사합니다!
Vadim Tofan

5

필자의 경우 프로젝트를 새 솔루션으로 옮긴 후에 테스트 탐색기에서 테스트를 찾지 못했습니다.

대답은 단순히 프로젝트의 이전 MS 테스트 어댑터에 대한 참조가 있다는 것입니다.

cs.proj 파일에서 MS Test Adapter 버전 1.1.11에 대해 아래 행이 중복되었습니다.

<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />

문제를 해결하려면

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '프로젝트 언로드'를 선택하십시오.
  2. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '편집'을 선택하십시오.
  3. 이전 버전의 어댑터를 가져 오는 라인을 제거하십시오.
  4. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '프로젝트 다시로드'를 선택하십시오.
  5. 솔루션 / 프로젝트 재 구축

같은 문제가 있었다. 솔루션 제거 및 재 구축이 작동하지 않았습니다. VS를 다시 시작하고 테스트가 발견되었습니다!
Mike Ward

4

Visual Studio에서 내 테스트를 찾을 수 없어서이 문제가 있었으며 메소드 외에 테스트를 실행할 버튼을 볼 수 없었으며 프로젝트에서 모든 테스트를 실행하여 선택할 수 없었습니다.

내 테스트 수업이 공개되지 않았다는 것이 밝혀졌습니다! 이를 공개함으로써 VS는 테스트를 발견 할 수있었습니다.


2

Visual Studio 2017에서 완벽하게 작동하는 새 테스트 프로젝트를 쉽게 만들 수 있었고 테스트 파일을 복사하고 참조를 추가하고 NuGet 패키지를 필요에 따라 추가했습니다.

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


새로운 프로젝트를 만들면 아마도 많은 시간을 절약 할 수있을 것입니다!
M.kazem Akhgary

2

필자의 경우 이전 .Net 버전에서 테스트 프로젝트를 업그레이드 한 프로젝트였습니다. app.config에서 이전 버전의 종속 어셈블리에 대한 어셈블리 바인딩이있었습니다.

app.config에서 어셈블 링 바인딩을 수정 한 후 테스트가 발견되었습니다.


2

발견

위의 답변은 저에게 효과적이지 않았습니다 (다시 시작, 버전 1.1.18로 업데이트 중 ... 이미 업데이트되어 임시 파일을 삭제하고 NuGet 캐시를 지우는 등).

내가 발견 한 것은 다른 테스트 프로젝트에서 MSTest.TestAdapterMSTest.Framework 에 대한 다른 참조가 있다는 것입니다 (내 솔루션에는 두 가지가 있습니다). 하나는 1.1.18과 같이 지적되었습니다 ...

packages.config

<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />

...하지만 다른 하나는 1.1.11에 대한 참조가 있습니다. 위의 답변 중 일부는 Visual Studio를 다시 시작한 후 두 개의 버전의 라이브러리가 내 temp 디렉토리 (% TEMP % \ VisualStudioTestExplorerExtensions \)에 나타날 때이 발견으로 이어집니다.

해결책

간단히 packages.config를 1.1.18 버전으로 업데이트하면 VS에서 장치 테스트 기능이 복원됩니다. MSTest 라이브러리를 나란히 참조 할 수없는 버그가있는 것 같습니다. 이것이 도움이되기를 바랍니다.

더 많은 정보:

  • Visual Studio 2017 Ent : 15.5.6 (이 문제를 해결하기 위해 15.0.1에서 업데이트했지만 두 가지 모두 가지고 있습니다)

2

해결책은 app.config단위 테스트 프로젝트에서 파일을 제거하는 것 입니다. 테스트가 다시 나타납니다!

이 파일은 프로젝트 참조에 실제로 존재하지 않는 bindingredirects에서 일부 dll을 참조했습니다. 프로젝트에 꼭 필요한 어셈블리 바인딩을 다시 추가하십시오.


1

내 경우에는 문제를 일으키는 솔루션에 UWP 프로젝트가있었습니다.

UWP 프로젝트를 언로드 할 때 테스트가 발견되었습니다. 다시로드하면 테스트가 다시 사라졌습니다.

모든 프로젝트를 언로드하고 테스트 프로젝트 만 유지하십시오. Test Runner에 10 개의 재 구축 솔루션 및 테스트 ound이 나타납니다. 프로젝트를 하나씩로드하고 매번 솔루션을 다시 빌드하여 문제를 일으키는 프로젝트를 찾으십시오.

샘플 저장소

VS 버그 리포트


답변을 보내주십시오. 그러나 이것은 내 문제가 아닙니다. 내 질문에 링크 된 예제 리포지토리를 보면 솔루션에 단일 프로젝트 만 있습니다. 제거 할 다른 프로젝트가 없습니다. 그 솔루션은 테스트이므로 실제 솔루션에서 프로젝트를 언로드한다고 말했지만 시도하지 않았습니다.
rayepps

1

문제

문제는 Visual Studio가 컴퓨터의 닷넷 코어 버전에서 '혼란'되고 있다는 것입니다. 제어판-> 프로그램 제거로 갔을 때 8 개의 다른 닷넷 코어 SDK 및 런타임이 설치되었습니다. 이것은 테스트를 찾을 때 VS가 자동으로 오류를 발생시키는 원인이었습니다.

문제 확인

명령 행으로 이동하여 dotnet 버전을 사용하여 문제를 확인할 수 있습니다 $ dotnet --version. 설치 한 최신 버전 이외의 것이 있으면 시스템에 불일치가 있고 올바른 버전을 사용하고 있지 않은 것입니다. 예 ... 닷넷 코어가 1.0.1설치되어 있지만 명령 프롬프트에서 버전을받을 때 1.0.0문제가있는 경우.

해결책

오래된 것들을 모두 삭제하십시오. 나는 제거해야했지만 (가장 오래된 dotnet rc 버전) 시작했지만 문제를 테스트 할 때 여전히 잘못된 버전을 제공했습니다. 결국 나는 완전한 청소를하기로했다. 나는...

  • 모든 Visual Studio 응용 프로그램을 제거했습니다 (내 컴퓨터 VS2015 및 VS2017에서)
  • 닷넷 코어의 모든 버전을 제거

내 컴퓨터가 모든 VS에서 완전히 비워지고 완료되지 않은 후에 VS2017 설치 했습니다 (최신 닷넷과 함께 제공됩니다). 나는 xUnit의 테스트 프로젝트와 테스트가 즉시 발견 탐색기 테스트 생성 이 해결을

이것은 과도한 것처럼 보일 수 있지만 다른 방법 으로이 문제를 해결하기 위해 2 주를 보냈습니다. 문제가있는 경우 항목을 제거 / 재설치하는 데 몇 시간이 걸리더라도 시간을 절약 할 수 있습니다.

참고 문헌


1

나는 모든 것을 시도했지만 아무것도 도움이되지 않았습니다. 내 경우에는 여러 테스트 프로젝트가있는 솔루션이 있었고 그중 일부는 오래된 ms-test 프레임 워크를 사용하여 Visual Studio가 그 중 하나만 찾았습니다.

허용 된 답변 에 표시된대로 모든 테스트 프로젝트에 대한 테스트 프레임 워크 패키지를 설치했습니다 . 그런 다음 이전 품질 도구에 대한 참조를 제거하고 Visual Studio를 다시 시작하면 이제 모든 테스트를 볼 수 있습니다.


1

C ++의 경우 :

C ++ 테스트에 대한 특별한 질문은 없지만 주제는 거의 동일하므로 테스트 검색에 문제가있을 때 도움이 된 것은 다음과 같습니다.

C ++로 데스크톱 개발 만 설치 한 경우 C ++ Universal Windows 플랫폼 도구 ( 선택 사항)를 사용하여 Universal Windows Platform 개발 도 설치하는 것이 해결책입니다 . Visual Studio 웹 설치 프로그램에서이를 선택할 수 있습니다.

그런 다음 테스트 프로젝트를 다시 빌드하면 테스트 검색이 작동합니다.

Btw, VS2017에서 단위 테스트 프로젝트를 만들었습니다. 일부 사용자는 VS2015에서 VS2017로 마이그레이션 된 프로젝트에 검색 문제가 있다고 언급 했으므로 중요 할 수 있습니다.


1

오래된 .dll을 제거하면 도움이 될 것입니다. C : \ Users (yourusername) \ AppData \ Local \ Temp의 % TEMP % 디렉토리에있는 임시 파일 지우기


1

나는 같은 문제가 있었다. 내 솔루션은 괜찮 았지만 갑자기 솔루션을 열었을 때 테스트가 중단되었음을 알았습니다.

마지막으로 NuGet 관리자를 사용하여 매우 오래된 버전으로 패키지를 다운 그레이드 Microsoft.VisualStudio.TestPlatform.TestFramework하고 Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions테스트 방법이 나타났습니다. 그런 다음 최신 버전으로 업그레이드했지만 여전히 존재했습니다.

따라서 패키지를 다운 그레이드하고 업그레이드하십시오.


1

내 경우에는 위의 어느 것도 나에게 도움이되지 않습니다. 그러나 NUNit3TestAdapter를 버전 3.8.0으로 다운 그레이드 한 다음 최신 버전 (3.10.0)으로 업그레이드하십시오.


1

때때로 테스트의 네임 스페이스 변경이 작동합니다. 폴더 구조는 다음과 같습니다.

A |___B | |___D |___C___E

네임 스페이스는 Tests. <name>와 같이 평평했으며 테스트 창에 표시되지 않았습니다. 네임 스페이스를 디렉토리 구조로 변경했을 때 모든 테스트가 나타났습니다. 이제 원하는 다른 네임 스페이스 구조로 되돌릴 수 있습니다.

프로젝트를 구축하는 것을 잊지 마십시오!


1

.NET Framework의 경우 테스트 프로젝트에는 이전에 다음 DLL에 대한 참조가있었습니다.

Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.TestFramework.Extentions

나는 그것들을 삭제하고 참조를 추가했다 :

Microsoft.VisualStudio.QualityTools.UnitTestFramework

그리고 모든 테스트가 나타나고 이전과 같은 방식으로 작동하기 시작했습니다.

위의 다른 제안을 거의 모두 시도했지만 테스트 DLL을 다시 참조하면 괜찮습니다. 나는이 사건에 처한 사람들을 위해이 답변을 게시했습니다.


1

내 경우에는 해결하기 위해 같은 문제에 직면했습니다.

  1. Windows 콘솔 (windows 키 + cmd)을 열었습니다.
  2. 프로젝트가 작성된 폴더로 이동하십시오.
  3. "dotnet test"명령을 실행하면 기본적으로 Visual Studio에서 실행되는 것과 동일한 테스트이지만 콘솔을 통해 실행할 때 전체 추적을 볼 수 있습니다.
  4. 이 오류 메시지 "비공개 클래스 MSTest.TestController.BaseTest에 정의 된 TestClass 특성"이 있습니다.
  5. 그래서 테스트 케이스로 이동하여 공개로 표시하고 다시 빌드하면 테스트가 올바르게 표시됩니다.

0

처음에는 MSTest를 사용하려고했습니다. 그 후, 나는 그것을 Nunit 테스트로 변경합니다. 그런 다음 MSTest를 백업하고 싶었습니다. 모든 nUnit 코드와 참조를 제거했지만 테스트 탐색기에 MSTest 메소드가 표시되지 않았습니다. 솔루션 : 모든 mstest nuget 참조를 제거하고 다시 설치했습니다. 끝난.


0

나에게 테스트 프로젝트 .csproj파일 의 TargetFramework 를

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

일했다.


0

필자의 경우 프로젝트 유형이 정적 라이브러리 (lib)로 설정되어 동적 라이브러리 (dll) 여야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.