[unit-testing] Visual Studio 2015 또는 2017에서 단위 테스트를 찾지 못함

2016-10-19 편집 :

원래 질문은 XUnit 테스트 러너의 VS2015 CTP6 관련 문제에 관한 것입니다. 여러 가지 상황에서 발생할 수있는 Visual Studio의 단위 테스트 검색과 관련하여 훨씬 광범위한 문제가 있음을 알 수 있습니다. 나는 그것을 반영하기 위해 내 질문을 정리했다.

나는 또한 비슷한 문제가 나타날 때 오늘날에도 여전히 사용하는 스크립트를 내 대답에 포함시켰다.

다른 많은 답변도 VS 테스트 러너의 복잡성을 더 잘 이해하는 데 도움이되는 것으로 입증되었습니다. 사람들이 여전히 솔루션을 공유하고 있다는 점에 감사드립니다!


원래 질문 2015-04-10 :

어제부터 Visual Studio Test Explorer는 내 프로젝트에 대한 테스트를 찾지 않습니다. 건물 후 녹색 로딩 바도 표시되지 않습니다.

Visual Studio 테스트 탐색기로 이동하여 “모두 실행”을 클릭하거나 테스트 방법을 마우스 오른쪽 단추로 클릭하고 “테스트 실행”을 선택하면 출력 창에 다음이 표시됩니다.

Could not load file or assembly 'Microsoft.VisualStudio.Web.ProjectSystem, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

나는 윈도우 10에서 Visual Studio 2015 CTP 6를 실행하고 프로 기술 미리보기, 10041. 닷넷 프레임 워크 버전은 상관하지 않는 것 빌드 – 그것의 발생 4.0, 4.5.24.6.

다음 테스트 프레임 워크를 사용해 보았고 모두 동일한 동작을 제공합니다.

  • Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0
  • xunit v2.1.0-beta1-build2945xunit.runner.visualstudio v2.1.0-beta1-build1051
  • NUnit v2.6.4NUnitTestAdapter v2.0.0

비슷한 것으로 보이는 GitHub (xunit)에서 문제를 발견 했습니다 : xunit 팀 의이 의견으로 # 295 발견 된 테스트를 얻을 수 없습니다 :

Visual Studio 2015 CTP 5는 xUnit.net뿐만 아니라 일반적으로 단위 테스트를 수행하는 많은 사람들에 의해 중단 된 것으로보고되었으므로 작동하지 않을 것으로 예상됩니다.

또한 Visual Studio의 러너 캐시를 정리했는지 확인하십시오. 손상된 경우 Visual Studio는 삭제 될 때까지 영구적으로 오작동합니다. 캐시를 지우려면 Visual Studio의 모든 인스턴스를 종료 한 다음 % TEMP % \ VisualStudioTestExplorerExtensions 폴더를 삭제하십시오 (정직하게도 % TEMP %에서 삭제할 수있는 모든 항목을 삭제해도 손상되지는 않습니다).

폴더를 삭제하라는 제안을 시도했습니다 %TEMP%\VisualStudioTestExplorerExtensions. 불행히도 문제가 해결되지 않았습니다.

나는 ReSharper에서 실제로 것으로 나타났습니다 입니다 몇 가지 테스트를 발견 할 수. xunit이 아닌 VS 및 NUnit 테스트에서만 작동합니다.

정리해야 할 일종의 임시 또는 캐시 폴더가 있어야하지만 Visual Studio에는 많은 폴더가 있으며 원하지 않는 부작용없이 삭제할 수있는 것은 아닙니다.



답변

놀랍게도 %TEMP%디렉토리 에있는 임시 파일을 지우면 문제가 해결되었습니다.

참고 :이 경로는 일반적으로 C:\Users\(yourusername)\AppData\Local\Temp

@ Warren-P가 포함되어 있으므로 %temp%시작 메뉴에 넣거나 “파일 탐색기”를 시작 %temp%하여 주소 표시 줄에 입력 하여 임시 폴더로 이동할 수 있습니다 .


답변

코드가 x64로 컴파일되어 기본 프로세서 아키텍처를 X64로 활성화해야 할 수 있습니다.

Test > Test Settings > Default Processor Architecture > X64


답변

  • NUnit 테스트 어댑터 2/3 가 VisualStudio에 설치되어 있는지 확인하십시오 .
    (Tools>Extensions and Updates )

  • 올바른 프로세서 아키텍처가 선택되어 있는지 확인하십시오.
    (Test>Test Settings>Default Processor Architecture)


답변

2016-10-19 (PowerShell 스크립트) 편집

이 문제는 여전히 그렇습니다. 필자는 관련 캐시 / 임시 폴더 / 파일을 자동으로 지우는 작은 PowerShell 스 니펫을 작성했습니다. 장래 독자들을 위해 여기에서 공유하고 있습니다.

@(
"$env:TEMP"
"$env:LOCALAPPDATA\Microsoft\UnitTest"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ComponentModelCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\Designer\ShadowCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ImageLibrary\cache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio Services\6.0\Cache"
"$env:LOCALAPPDATA\Microsoft\WebsiteCache"
"$env:LOCALAPPDATA\NuGet\Cache"
) |% { Remove-Item -Path $_ -Recurse -Force }

미리 Visual Studio를 닫고 나중에 재부팅하는 것이 좋습니다.

TEMP 폴더를 삭제하는 것은 필요하지 않을 수 있으며 경우에 따라 바람직하지 않을 수도 있으므로 TEMP 폴더를 먼저 지우지 않고 시도해 보는 것이 좋습니다. 그냥 생략"$env:TEMP" .

원래 답변 2015-04-12

Visual Studio 관련 temp / cache 폴더를 철저하게 정리 한 후에 문제가 “해결되었습니다”.

모든 것을 하나씩 살펴보고 그 사이를 테스트 할 시간이 없었기 때문에 불행히도 실제로 어떤 문제가 발생했는지 알 수 없습니다.

다음은 내가 수행 한 정확한 단계입니다.

  1. 닫힌 Visual Studio
  2. 시스템 및 브라우저를 지우는 데 CCleaner 사용 temp 파일 / 폴더
  3. 다음 파일 / 폴더를 수동으로 지우거나 삭제했습니다.

    • %USERPROFILE%\AppData\Local\assembly
    • %USERPROFILE%\AppData\Local\Microsoft\UnitTest
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\Designer\ShadowCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ImageLibrary\cache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio Services\6.0\Cache
    • %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache
    • %USERPROFILE%\AppData\Local\NuGet\Cache
    • %USERPROFILE%\AppData\Local\Temp

답변

이 문제의 한 가지 이유는 테스트 클래스가 공개되지 않기 때문입니다. MSTest는 공개 클래스의 테스트 만 검색합니다.


답변

당신이 테스트 탐색기에서 테스트를 연결하려는 경우 비주얼 스튜디오 2015 (업데이트 3)에서 다음 설치해야 NUnit과 테스트 어댑터 .Download에게에서 어댑터 도구 -> 확장 및 Updates->를 온라인 탭 (당신은 어댑터를 검색 할 수 있습니다 )-> 다운로드 . Visual Studio를 다시 시작하면 테스트 프레임 워크의 변경 사항을 볼 수 있습니다.


답변

나는 이것에 대한 완전한 대답을 얻지 못했지만 테스트 프로젝트를 가지고 노는 것에 의해 몇 가지 사항을 결정했습니다.

  1. xunit.runner.aspnet : 2.0.0-aspnet-beta4공식 beta4의 aspnet5 방출이 나타납니다 될 수 있다는 부분은 Visual Studio에서 작동하지 않습니다.
  2. 대신 사용 "xunit": "2.1.0-*""xunit-runner.dnx": "2.1.0-*"패키지 DO는 Visual Studio에서 작동합니다.
  3. VS가 테스트를 발견하려면 프로젝트에 “xunit.runner.dnx”를 실행하는 “test”라는 단일 명령이 있어야합니다. 추가 명령을 추가하면 명령이 중단 될 수 있습니다.
  4. 테스트 탐색기 창이 여전히 비어 있으면 프로젝트에서 “test”명령을 제거한 다음 솔루션을 다시 빌드 한 다음 “test”명령을 project.json에 다시 추가하십시오.
  5. @ Fred-Kleuver의 제안에 따라 모든 캐시를 지우는 것이 도움이 될 수 있지만 모든 단계를 분리하지는 않았으므로 확실하지 않습니다.

이는 데일리 스가 아닌 베타 4 릴리스를 사용하는 VS 2015 CTP 6에 따라 최신 상태입니다.