Visual Studio 2013에서 단위 테스트를 찾지 못함


146

Visual Studio 2013에는 하나의 웹 프로젝트, 하나의 라이브러리 프로젝트 및 하나의 단위 테스트 프로젝트로 구성된 간단한 솔루션이 있습니다. 솔루션을 열고 단위 테스트를 실행하려고하면 Visual Studio에서 검색하지 않습니다. 테스트를 실행하려면 메뉴로 이동하여 테스트-> 실행-> 모든 테스트 실행을 선택하거나 테스트 탐색기 창을 열어보십시오. 메소드에 의해 Visual Studio는 솔루션에서 테스트를 찾지 않습니다.

먼저 간단한 단위 테스트 프로젝트를 만들고 테스트를 실행하면 Visual Studio에서 테스트를 발견하고 실행할 수 있습니다. 그런 다음 이전 솔루션을 열면 Visual Studio는 이제 모든 테스트를 감지합니다. 솔루션을 저장하려고하지만 단위 테스트 프로젝트를 먼저 만들지 않고 솔루션을 닫았다가 다시 열면 Visual Studio에서 테스트를 다시 찾지 않습니다. 이것은 왜 이런 일이 일어나고 있는지 모르는 매우 이상한 행동입니다.

비주얼 스튜디오 팀 재단과 통합 된 소스 컨트롤 git을 사용하던이 프로젝트에서 혼자 일했습니다. Visual Studio의 문제는 새로운 요소가 프로젝트에 왔을 때와 온라인으로 소스 제어를 통해 솔루션을 다시 만들어야 할 때 단위 테스트가 시작되지 않는다는 것을 발견하지 못합니다. 이 전에 모든 테스트는 항상 Visual Studio에서 발견되었습니다.

단위 테스트를 만들기 위해 dll Microsoft.VisualStudio.QualityTools.UnitTestFramework를 사용합니다. 내 Visual Studio 버전은 다음과 같습니다. 웹 버전 12.0.30723.00 업데이트 3 용 Microsoft Visual Studio Express 2013 3. 내 .net 프레임 워크 버전은 4.5.50938입니다.

모든 테스트는 다음과 같습니다.

[TestClass] 
public class Service1Test 
{ 
    [TestMethod] 
    public void Test1() 
    {
        Assert.IsTrue(True); 
    } 
}

2
이 비동기 기반 단위 테스트입니까?
Jamie Keeling

문제가 무엇인지 모르지만 관리자 권한으로 실행하면 문제가 해결되었습니다.
Sriram Sakthivel

모든 동기화 기반 단위 테스트
miguelbgouveia

2
ReSharpers 또는 NCrunch와 같은 외부 테스트 실행기를 사용해 보셨습니까? 설치가 잘못되었을 수 있습니다 (VS 재설치)
Carsten

1
이 중 어느 것도 나를 위해 문제를 해결하지 :( 재해 내가 NUnit를 포기했고 UnitTestFramework에 의존하고 무엇을 -. 영업 이익에서 이상하게 반대의 문제를
아담

답변:


210

테스트가 제대로 표시 되려면 때때로해야 할 일이 있습니다.

  1. 솔루션이 보호 된 드라이브에있는 경우 읽기 / 쓰기를 위해 관리자 액세스가 필요한 경우 때로는 테스트의 일부만 발생합니다. 이 경우 VS를 관리자로 확실히 실행하십시오.

  2. 솔루션이 64 비트 인 경우 테스트> 테스트 설정> 기본 프로세서 아키텍처가 x64로 설정되어 있는지 확인하십시오. 때때로 x86으로 설정됩니다. x64로 설정 한 다음 다시 빌드하십시오.

  3. 때로는 테스트 탐색기가 다시 시작되기 때문에 Visual Studio를 다시 시작하면 트릭이 발생합니다.

  4. 실제로 테스트 프로젝트 / 솔루션을 빌드하는 것을 잊지 마십시오. (나머지 프로젝트로 빌드하려면 솔루션> 특성> 구성 특성> 구성을 마우스 오른쪽 단추로 클릭하고 테스트 프로젝트의 "빌드"상자를 선택하십시오.)

  5. 테스트가 public테스트 클래스 의 섹션에 있는지 확인하십시오


34
이 답변이 약간 늦다는 것을 알고 있지만 Google 검색으로 나를 여기로 데려 왔으며 언급 한 내용으로도 문제가 해결되지 않았습니다. 결국 나는 그것이 내 목록에서 2 위라는 것을 알았으므로 그 지식과 시간이 지남에 따라 얻은 다른 속임수를 남기고 싶었습니다.
AndyG

7
# 2와 # 3의 조합이 나를 위해했습니다. Visual Studio는 x86 용으로 빌드 되었기 때문에 솔루션의 여러 (테스트되지 않은) 프로젝트가 테스트 검색 단계에서 제외되었다고 불평했지만 괜찮습니다.
Nate Barbettini

4
설정이 모두 정확하고 다시 시작해도 작동하지 않는 것을 발견했습니다. 나를 위해 문제를 해결 한 것은 단순히 솔루션을 구축하는 것이 었습니다. 나는 이것이 바보처럼 보일지 모르지만 그것이 필요한 것은 분명하지 않다. 나는 공식 문서 에서이 단계를 언급 한 것을 보지 못했습니다.
user1807768

6
VS2015에서도 같은 문제가있었습니다. # 2 문제가 해결되었습니다.
mcolegro

2
사람들이 왜 그렇게 자주 실패하는 제품에 대해 많은 돈을 지불하는지 모르겠습니다. 내 프로젝트를 2015 년으로 업그레이드하고 테스트를 시작하기 전에 2 번 3 번을 수행해야했습니다.
Matthew Hoggan

81

NUnit을 사용하는 경우 먼저 NUnit 어댑터를 다운로드하십시오.

도구 → 확장 및 업데이트… → 온라인으로 이동하여 "NUnit 테스트 어댑터"를 검색하십시오.


2
Microsoft의 UnitTests를 사용하고 있습니다. 이 경우에는 아무것도 설치할 필요가 없다고 생각합니다.
miguelbgouveia

1
이것은 나를 위해 그것을했습니다-많은 의무가 있습니다.
Matas Vaitkevicius

그것은 나를 위해 그것을 고쳤다. 감사.
jjthebig1

문제를 해결 한 것처럼 상향 조정되었지만 NUnit 어댑터가 필요하거나 Visual Stdio가 NUnit과 함께 작동해야합니다.
Owain Glyndŵr

당신은 신 선생님입니다.
Nox

61

테스트 클래스가 있는지 확인하십시오 public. 다른 클래스를 참조하는 경우에도 같은 클래스인지 확인하십시오.

또한 어설 션이 없거나 테스트를로 장식 [TestMethod]하지 않는 경우 테스트가 인식되지 않을 수 있습니다.

2 가지 추가 사항 : 1) 비동기 단위 테스트는 기껏해야 웃기는 일이지만 최악의 상황은 전혀 없습니다. Stephen Cleary 의이 기사 를 살펴보고 관심이 있으시 다면 여기에서 멀리 떨어지 십시오.

2) NUnit을 사용하고 동일한 문제가 발생하면 [TestCase]Nunit 대신 Nunit에 대한 것임을 명심하십시오.[TestMethod]

위에서, 여기의 말로 미루어 보아 기사 나는 모두 코드 프로젝트에 게시 한 MSTestNUnit당신은 당신이 아무것도 누락하지 않는 그것을 스핀을주고 싶어 할 경우,.


1
모든 테스트는 다음과 같습니다. [TestClass] public class ServicesUtilsTest {[TestMethod] public void Test1 () {Assert.IsTrue (True); }}
miguelbgouveia

이것은 매우 명확하지 않습니다. 질문에 코드 블록에 넣으면 이해할 수 있습니다 :)
Noctis

내 모든 테스트는 동기화 코드에 대한 것이며 내 문제는 단위 테스트 코드가 아니라 Visual Studio에서 테스트를 찾지 못하는 경우가 더 많다고 생각합니다.
miguelbgouveia

대신 이것을 사용해보십시오 :using Microsoft.VisualStudio.TestTools.UnitTesting;
Noctis

1
이미 Microsoft.VisualStudio.TestTools.UnitTesting을 사용하고 있습니다. 이 네임 스페이스는 DLL Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll에 정의되어 있습니다
miguelbgouveia

28

나는 같은 문제가 있었지만 다른 해결책은 효과가 없었다. 2 어댑터와 함께 NUnit 3 프레임 워크를 사용하고 있음이 밝혀졌습니다.

NUnit 3을 사용하는 경우 확장 및 업데이트로 이동하여 NUnit3 테스트 어댑터를 설치하십시오.


Nuget 패키지의 설명에서 이것을 말합니다. 그러나 당신이 나와 같고 읽지 않으면 이것이 도움이되기를 바랍니다. "이 패키지에는 테스트에서 참조되는 NUnit 3.0 프레임 워크 어셈블리가 포함되어 있습니다. nunit-3.0 버전을 설치해야합니다. 콘솔 프로그램 또는 테스트를 실행하기 위해 NUnit 3.0을 지원하는 타사 러너. NUnit 2.x와 함께 사용하려는 러너는 3.0 테스트를 올바르게 실행하지 않습니다. "
Frank

필자의 경우 NUnit3 업데이트와 관련이 있다는 것을 알았지 만 한 테스트 세트는 통과했지만 다른 테스트는 보지 못했습니다. 면밀히 조사한 결과 모든 테스트가 통과되었지만 출력에 많은 예외가있었습니다.
Rich Shealer

나도 마찬가지였다. NUnit 2.x에서 3.x로 업데이트되지 않은 채 nuget "update-package"를 실행했습니다.
Jens

현재 NGet 3.0 테스트 어댑터는 NuGet을 통해 찾을 수 없습니다 ( NUnit 3.0 Wiki 참조 ). 그래도 확장으로 설치할 수 있습니다.
vauhochzett

1
고마워요 프랭크. 내 문제가 해결되었습니다. 지금은 콘솔 창 :)에서 단위 테스트 결과를 볼 수 있어요
산토 쉬 쿠마 patro

12

때때로이 문제가 발생합니다. 나를 위해 일하는 것은 Visual Studio를 종료하고 폴더로 이동하는 것입니다.

%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache

내용을 삭제하십시오.

Visual Studio를 열고 프로젝트를 다시로드하면 테스트 탐색기에 테스트가 다시 포함되어야합니다.


저에게는 효과가 없습니다. 최근 업데이트 5 설치와 함께 Visual Studio 2013 Express를 사용하고 있습니다. 여전히 단위 테스트가 나타나지 않습니다.
miguelbgouveia

이것은 또한 나를 위해 일한 것입니다. Visual Studio를 다시 시작하지 않고도 작동했습니다. 배수구가 내려간 시간은 마침내 끝났습니다.
Stephan Ryer

이 디렉토리는 더 이상 VS2017에 없습니다.
Noel Widmer

감사합니다 그것은 나 같은 비주얼 스튜디오의 설치에 따라이 폴더가 다른 버전을 가질 수있는 모든 사람들을 위해 작동합니다%LocalAppData%\Microsoft\VisualStudio\16.0_03b7a93c\ComponentModelCache
라비 Kumar Mistry

12

XUnit 사용자는 테스트 탐색기 창에 더 이상 테스트가 나열되지 않습니다. 테스트를 다시 검색 할 수있게하려면 아래 강조 표시된 이 중요한 팁을 시도 하십시오 .

테스트를 발견하거나 실행하는 데 문제가있는 경우 Visual Studio 내에서 손상된 러너 캐시의 희생자 일 수 있습니다. 이 캐시를 지우려면 Visual Studio의 모든 인스턴스를 종료 한 다음 % TEMP % \ VisualStudioTestExplorerExtensions 폴더를 삭제하십시오. 또한 프로젝트가 단일 버전의 Visual Studio 러너 NuGet 패키지 (xunit.runner.visualstudio)에만 연결되어 있는지 확인하십시오.

TEMP를 입력하여 대상 폴더를 찾으십시오.


이것은 나를 위해 작동하지 않았습니다. 테스트 탐색기는 내 테스트를 찾지 못하며 내가 잘못하고 있다고 말할 수있는 한 여기에서 몇 가지 해결책을 시도하지 않았습니다.
Skychan

MsTestV2 사용 – 이것이 문제를 해결 한 유일한 방법
Nathan

5

미래의 Google 직원에게는 드문 시나리오가 발생했습니다.

내 기본 테스트 클래스에는 TestContext라는 속성이 있습니다. 이것은 MSTest의 예약 TestContext 속성을 방해하여 VS / Resharper에서 모든 테스트를 숨길 수 있습니다 (베이스에서 상속되지 않은).


1
나도 데려 왔어! 테스트 컨텍스트 속성을 만드는 것을 잊었습니다 public.
escape-llc

4

나를 위해 '솔루션 구성'을 릴리스 대신 디버그로 변경했습니다.


4

내 문제는 단위 테스트 방법이 void 가 아니고 매개 변수를 받기 때문에 발생했습니다.


모든 것 중에서 .... 이것은 내 문제 였고 매개 변수는 의미가 있습니다. 결국, 테스트 시스템은 무엇을 전달할 것입니까? 해결책은 테스트하려는 메소드를 수동으로 호출하는 테스트 메소드를 만드는 것입니다. WebAPI 프로젝트를 테스트하고 Get with params가있는 경우 일치하는 Get 호출이 있어야하지만 탐색기에는 표시되지 않습니다.
MetalPhoenix

4

async voidVS 테스트 탐색기에서 로 표시된 단위 테스트 방법을 찾을 수 없음을 발견했습니다. VS가 테스트가 끝날 때까지 기다렸다가 성공 여부를 결정할 방법이 없기 때문입니다. 비동기식으로 실행하기 위해 테스트 메소드가 절대적으로 필요한 경우 대신 대신 태스크를 리턴하도록하십시오 async Task. 이것이 문제를 해결한다는 것을 알았습니다.


1
이것은 위의 질문에 대답하지 않지만 이것은 내가 해결하려고했던 문제입니다. 그래서 당신은 사고 +1 :) 정말 감사합니다!
CF

3

모든 프로젝트를 x86 / x64 대신 MSIL (Any CPU)로 빌드하십시오. 이상하게 나를 위해 일했다


난 그냥 어떤 CPU를 사용하여 테스트 프로젝트를 구축했다, 다른 프로젝트는 남아 64
에두아르도 Brites

1
기술적으로 C # / VB.NET은 항상 MSIL로 컴파일됩니다. 프로젝트 설정 "x86", "x64"또는 "Any CPU"(및 최신 버전에서는 "32 비트 선호")는 EXE / DLL의 맨 위에있는 플래그 일뿐입니다. 그래도 포인트는 여전히 유효합니다. NUnit은 특정 아키텍처를 실행해야한다는 표시로 인해 실행 엔진에로드 할 수없는 테스트를 나열하지 않습니다.
Jonathan Gilbert

3

AndyG의 솔루션이 작동하는 동안 다음과 같은 방법으로 PreferredToolArchitecture 환경 변수를 "x64"로 설정하는 것이 더 오래 지속될 수 있습니다.

Visual Studio에서 기본 amd64 도구 체인을 사용하도록 만드는 방법

또는

  • 제어판 | 시스템 및 보안 | 시스템 | 고급 시스템 설정 | 환경 변수
  • 선호하는 도구 아키텍처 = x64
  • DefaultToolArchitecture = 네이티브 64 비트
  • PROCESSOR_ARCHITECTURE = x64
  • 프로세서 아키텍처 = x64

2

나는 같은 문제에 직면하고 있었고 솔루션 플랫폼 메뉴에서 "혼합 플랫폼"을 선택하면 다른 답변들도 작동한다는 것을 다시 한 번 기억했습니다.


그러나 솔루션 플랫폼 메뉴는 어디에 있습니까? Visual Studio에 있습니까? 웹용 Visual Studio Express 2013을 사용하고 있는데 해당 메뉴를 찾을 수 없습니다.
miguelbgouveia

2

나는 다음과 같이 내 것을 추가했다.

public static void TestMethod1(){}

정적을 제거하면 작동하기 시작했습니다 ....



1

프로젝트 메뉴> 구성 관리자로 이동하여 테스트 프로젝트 플랫폼이 나머지 프로젝트와 일치하는지 확인하고 빌드 후 다시 빌드하십시오.


1
프로젝트 메뉴에 구성 관리자 옵션이 없습니다. 프로젝트 속성 옵션 만 찾을 수 있습니다. 나는 단위 테스트 프로젝트의 플랫폼이며 다른 프로젝트와 동일합니다. 따라서 나를 위해이 솔루션은 작동하지 않습니다.
miguelbgouveia

"나머지 프로젝트와 일치"정의
amalgamate

1

방금 이것과 마주 쳤지 만 비슷한 사례가 보이지 않았습니다.

에서 .csproj내 테스트 프로젝트의 파일, NUnit를 참조 개인 정보 보호로 설정했다 False:

<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
  <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
  <Private>False</Private>
</Reference>

내가 설정 한 후 <Private>에를 True일했다.


1

이 패키지 만 설치하면됩니다 :

NUnit 테스트 어댑터 NUnit 테스트 어댑터


다른 단위 테스트 프레임 워크를 사용하면 문제가 해결된다는 것을 알고 있습니다. 그러나 계속해서 솔루션이 아닌 Microsoft Unit Tests 프레임 워크를 사용하고 싶었다면.
miguelbgouveia


1

나는 똑같은 문제가 있었다.

프로젝트에 추가 한 호환되지 않는 버전의 NUnit (3.2.0)과 설치 한 테스트 어댑터 (2.0.0) 때문입니다.

수정하려면 "도구> 확장 및 업데이트"를 사용하고 NUnit3 테스트 어댑터를 검색하면 그 후 내 테스트가 발견됩니다.

건배


NUnit을 사용하지 않습니다.
miguelbgouveia

1

의존성을 제대로 구현하기 위해 테스트 프로젝트에서 X64 아키텍처를 사용해야한다고 주장합니다 (제 경우와 같이). 테스트-테스트 설정 메뉴 에서 기본 프로세서 아키텍처를 수정해야 할 수도 있습니다. 이것을 X64로 설정하면 테스트 탐색기가 Microsoft.VisualStudio.TestTools.UnitTesting을 사용하여 테스트를 찾을 수있었습니다.


1

긴 목록에 추가해서 죄송하지만 완전히 다른 문제가있었습니다. 먼저 테스트 탐색기에서 '모두 실행'을 클릭 한 다음 Visual Studio에서 빌드 출력 창을 볼 때 문제를 발견했다고 언급하고 싶습니다. 메시지가 사라지면 적극적으로 확인해야합니다.

문제는 테스트 스캔 중에 DLL 이로 드되고 테스트 유형이 열거되는 것처럼 보입니다. 이로 인해 참조가로드되고이 프로세스 중에 오류가 발생하면 탐색기에 테스트가 표시되지 않습니다. 테스트 DLL이 성공적으로로드되지 못하게하는 두 가지 문제가 있습니다.

  • 구성 파일에 여전히 바인딩 리디렉션이 남아 있습니다 (테스트 프로젝트에서 참조 된 것보다 낮은 버전의 NHiberate로 리디렉션).
  • 충돌하는 어셈블리 참조 (2 단계 참조는로드 할 수 없음) AsmSpy 는 이것들을 찾아내는 훌륭한 도구입니다.

저도 같은 문제에 직면했다 ... DLL이로드되지 않은 연구 결과에 힘든 시간을 보냈습니다
터지 amarnath

1

네트워크 공유 또는 공유의 일부인 내 문서 디렉토리 에서 Visual Studio (내 경우에는 VS 2015 커뮤니티) 솔루션을로드하면 이 문제가 발생합니다. 솔루션과 기본 프로젝트를 로컬 폴더로 이동하여 해결했습니다.


1

2 일을 보낸 후 ... 위의 어느 것도 나를 위해 일하지 않았습니다. 유일한 "솔루션"은 다음과 같습니다. 프로젝트 속성으로 이동-> 빌드 탭. 그런 다음 창의 오른쪽 하단에있는 고급 버튼을 클릭하십시오. "Debug Info :"를 "full"로 변경하고 확인을 클릭하십시오.

스크린 샷은 다음과 같습니다. 여기에 이미지 설명을 입력하십시오

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


0

나는 같은 문제를 겪었다. 그리고 조사하고 dll이 빌드되지 않았고 올바른 폴더에 넣은 것을 발견했습니다. 구성을 변경하자마자 표시되었습니다. -프로젝트 빌드 옵션, 어떤 폴더를 사용해야합니까? -빌드 메뉴 항목 빌드 구성을 확인해야합니다.

그것은 나를 위해 그것을 고쳤다.


나를 위해 Visual Studio에서 정의 된 테스트를 찾지 못했기 때문에 테스트 용 dll도 빌드되지 않았습니다. Visual Studio Express를 사용하고 있으며 빌드 메뉴 항목이 없습니다. 그러나 구성 관리자에서 모든 빌드 옵션을 확인했습니다. 그래서 나는 그것이 내 경우에는 문제가되지 않는다고 생각합니다.
miguelbgouveia

@miguelbgouveia, 그것은 다른 방법입니다-VS는 DLL을 빌드 한 다음 테스트를 위해 스캔합니다. 따라서 테스트 프로젝트 DLL이없는 경우 테스트가 정의되지 않습니다.

0

Visual Studio 2013.5의 경우 솔루션에서 \ TestResults 디렉토리를 지우는 것이 도움이되었습니다. Visual Studio는 발견 된 테스트를 저장하는 mdf 파일을 손상시켜 단위 테스트의 발견을 방지합니다.


1
프로젝트 솔루션에 있습니다. 솔루션 탐색기에서 프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하고 파일 탐색기에서 폴더 열기를 클릭하십시오. 거기에서 하나의 디렉토리로 이동하여 / TestResults 디렉토리를 삭제하십시오. 모든 것을 삭제하려면 Visual Studio를 종료해야 할 수도 있습니다. 다음에 프로젝트를 열 때 디렉토리가 다시 작성됩니다.
MartijnK

0

모든 프로젝트가 동일한 구성으로 실행되고 있는지 확인하십시오. 프로젝트의 속성 => 디버그 => 플랫폼 드롭 다운 목록에서 다른 프로젝트에서 결정한대로 적절한 플랫폼을 선택하십시오 (나에게 "모든 CPU"였습니다).


0
  • 솔루션이 빌드되지 않은 경우 단위 테스트를 찾을 수 없으므로 시도해보십시오 (솔루션 빌드). 그러나 솔루션은 컴퓨터가 연결되어 있는지 묻는 헬프 데스크와 같습니다.
  • 클린 재 구축 후에도 문제가 해결되지 않으면 전체 배치 빌드를 실행해도 문제가 해결되었습니다.

0

같은 문제가 있었다; 테스트가 갑자기 발견되지 않았습니다.

Nunit 테스트 어댑터가 어떻게 든 비활성화되었습니다. 확장 프로그램 관리자에서 활성화를 클릭하면 문제가 해결되었습니다.


0

잘라 내기 / 붙여 넣기 오류가 발생 [Test Method]하여 테스트 전에 중단되었음을 알 때까지 동일한 문제가 발생했습니다 .


그것은 이미 나에게 일어난 일입니다. 그러나 이것에서는 그렇지 않습니다.
miguelbgouveia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.