Visual Studio를 설치하지 않고 mstest.exe를 사용할 수 있습니까?


108

mstest.exe를 사용하여 빌드 서버에서 단위 테스트를 실행하고 싶지만 빌드 서버에 Visual Studio를 설치하고 싶지 않습니다. Visual Studio없이 MSTest 만 설치할 수 있습니까?


좀 더 자세히 설명해 주시겠습니까? 어떤 버전? 서버를 구축 하시겠습니까? etc
Richard Banks

답변:


168

Visual Studio없이 mstest.exe를 실행할 수 있습니다.
아래 Visual Studio ISO 용 에이전트 중 하나를 다운로드 하고 서버에 테스트 에이전트 를 설치 합니다.

비주얼 스튜디오 2017 (127메가바이트 디스크 공간, 적은 다운로드보다)
스튜디오 2015 비주얼 (128 메가 바이트 설정은 2GB의 디스크 공간 필요)
비주얼 스튜디오 2012 (224메가바이트)
비주얼 스튜디오 2013 (287메가바이트)
비주얼 스튜디오 2010 (5백15메가바이트)

그러면 명령 줄에서 mstest.exe를 실행하는 데 필요한 모든 것이 설치되며 Visual Studio보다 훨씬 가볍습니다. ~ 500mb 다운로드 및 약 ~ 300mb로 정확히 기억하면 테스트 에이전트 만 설치합니다.

최신 정보

VS 2017 이전 버전의 경우 여기를 참조하십시오.

https://www.visualstudio.com/vs/older-downloads/


TestAgent 및 TestController를 설치 한 후 MsTest.exe는 어디에 배치됩니까?
Evgeny Levin

3
C : \ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole '2013 년

1
Visual Studio 2008 용 에이전트가 있습니까?
Tomas Kubes 2014 년

3
내 그룹은 Visual Studio 2012 테스트 에이전트를 설치 한 후 문제가 발생했습니다. 레지스트리 값의 일부를 수정하여 결과적으로 동일한 컴퓨터에있는 Visual Studio 2010 항목을 엉망으로 만들었다 고 생각합니다. 조심하세요.
스티븐

1
2015 년 링크가 종료되었습니다. 테스트 에이전트는 이제 통해 확인할 수 있습니다 visualstudio.com/downloads/?q=agents
Onots

18

이 대답은 특히 Visual Studio 2017과 관련이 있으며 대답은 yes 입니다. 그러나 Microsoft (여전히)는 관련 실행 파일 ( MSBuild.exeMSTest.exe) 을 찾기위한 공식 API를 제공하지 않으므로 이러한 파일을 찾기 위해 레지스트리 키를 읽거나 다양한 디렉토리를 조사해야합니다 . 경고를 받았습니다.

  • 단위 테스트 프로젝트 만 빌드 해야하는 경우 MSTest.TestFramework해당 프로젝트에 패키지 를 설치 하고 참조를 제거 Microsoft.VisualStudio.QualityTools.UnitTestFramework합니다. 이제 Visual Studio 2017 빌드 도구 를 설치 하고 호출 msbuild.exe하여 빌드를 수행하기 만하면됩니다.
  • 테스트도 실행 해야한다면 상황이 더 까다로워집니다.
    • 가장 간단한 해결책은 VS2017 Community Edition (msbuild와 mstest를 모두 포함)을 설치하는 것입니다. 그러나 이것의 합법성을 확신 할 수 없으며 변호사가 아니므로주의하십시오!
    • (디스크 공간의 측면에서 훨씬 가볍고,) 법적으로 안전한 솔루션은 설치하는 것입니다 비주얼 스튜디오 2017 테스트 에이전트를 하고 다음 비주얼 스튜디오 2017에 대한 빌드 도구 ( 정확한 순서가 중요하다 1 ); 이것은 당신을 줄 것이다 MSTest.exe하고 vstest.console.exe있는 당신은 그에게 호출 할 수 있습니다. 이러한 실행 파일이 MSBuild.exe빌드 도구에서 와 동일한 디렉토리 구조에 존재하지 않기 때문에 실제로 이러한 실행 파일이 어디에 있는지 파악하는 것은 힘든 일 입니다.

마지막으로, 매우 중요한 점 : MSTest.TestFrameworkVisual Studio IDE에서 테스트를 사용 하고 여전히 검색하고 실행할 수 있어야하는 MSTest.TestAdapter경우 단위 테스트 프로젝트 에도 설치 해야 합니다.

1 : VS2017은 병렬 설치를 지원하지만 가장 최근 설치 만 기록하는 단일 레지스트리 키를 사용합니다. 따라서 Test Agent를 마지막으로 설치하면 키가 해당 설치 디렉터리를 가리 키지 만 Test Agent에는이 포함 MSBuild.exe되어 있지 않으므로이 레지스트리 키를 사용하여 실행 파일의 경로를 알아내는 코드는 실패합니다. Microsoft가 테스트 에이전트를 빌드 도구의 선택적 부분으로 만들지 못한 이유는 (모든 EXE가 동일한 디렉터리 계층 구조에 있도록) 누구나 추측 할 수 있습니다.


테스트 에이전트 방법을 통해 설치되었지만 mstest.exe가 여전히 실패합니다 File extension specified '.webtest' is not a valid test extension..
Gregory Suvalian

이제 vswhere 가 있습니다 . 예를 들어 " 프로그래밍 방식으로 VS2017 설치 디렉토리 찾기 "또는 " MSBuild.exe를 찾을 수 없음, cmd.exe " 와 같은 다른 질문을 참조하십시오 .
Wai Ha Lee

@WaiHaLee vswhere가없는 것보다 낫지 만 VS 설치 디렉터리를 기준으로 MSBuild의 위치에 대해 여전히 가정해야합니다 ... (언제?) Microsoft가 이러한 실행 파일을 재배치하기로 결정하면 그 가정이 더 이상 유효하지 않습니다. . MSBuild / MSTest / VSTest (아무도 신경 쓰지 않는 VS 설치 디렉터리와 반대)에 대한 경로를 얻을 수있는 프로그래밍 방식을 Microsoft가 만들 수 없거나 만들지 않는 이유는 여전히 저 밖에 있습니다.
Ian Kemp

네, 게임이 짜증나 네요. 나는 확실히 그들은 .... 그 이유를 가지고 있지만거야
와이 하 리에게

@Ian Kemp 위의 내용에 따라 테스트 에이전트와 빌드 도구를 설치했지만 오류가 발생 No test is available in C:\Users\..\Desktop\MyExeName.exe... 합니다. 그래서 질문을 열었습니다 . 단서가 있으면 도움을 주시면 감사하겠습니다.
user1207289

4

나는 당신이 할 수 있다고 생각하지만 확실히 지원되지 않습니다.

Visual Studio를 설치하지 않고도 MSTest가 작동한다고 주장하는 사람이 작성한이 블로그 기사를 발견했습니다.


Hacking이라는 단어가 포함 된 모든 URL은 MS가 구현을 변경하기로 결정한 경우 실제로 노력의 가치에 의문을 제기해야합니다. 환경이 불안정 할 수 있고 각 Windows 업데이트에서 예기치 않은 일이 발생할 수 있습니다 (정기 업데이트를 유지합니다).
Russell

이 경우 Windows 업데이트가 해킹을 깨뜨릴 가능성은 거의 없습니다. 그러나 최신 버전의 mstest (예 : 최신 버전 또는 VS의 서비스 팩 내)는 다르게 작동 할 수 있습니다.
Doc Brown

@Russell-개인적으로 추가 VS 라이선스를 요청하거나 대신 NUnit을 사용합니다.
Justin

모든 답장에 감사 드리며, 추가 VS 라이선스를 받게됩니다.
yang-qu

1
위의 블로그 게시물의 작성자로서 나는 그것이 작동하고 깨질 가능성이 거의 없음을 증명할 수 있습니다. 적어도 VS2008의 경우. 나는 VS2010에 대해 이것을 보지 않았습니다. MSTest가 VS에 너무 깊이 통합되어 있다는 것은 테스트 키트의 큰 약점이지만 사람들이 Team System을 사용하도록 장려하기 때문에 MS가 고칠 것이라고 생각하지 않습니다.
foxxtrot 2010-08-28

4

@crocpulsar, 빌드 서버에 Visual Studio를 설치해야 하지만 추가 라이선스를 구입할 필요는 없습니다 .

VS가 설치되지 않은 상태에서 빌드 및 MSTest가 작동하도록하는 데에는 너무 많은 의존성이 있으며, 이는 확실히 지원되지 않습니다.

빌드를 시작하는 사람이 라이센스를 가지고있는 한 빌드 서버에는 라이센스가 필요하지 않습니다. 이것은 2005 년의 암울한 날 이후로, 에디션 패리티가있는 한 괜찮습니다.

팀의 모든 구성원이 Ultimate를 가지고 있다면 빌드 서버에 자유롭게 설치할 수 있습니다. 하지만 팀원 중 한 명이 프리미엄을 보유하고 있다면 빌드 서버에 프리미엄을 설치하는 것이 이상적입니다. 이를 통해 코드 커버리지, 테스트 영향 분석 및 아키텍처 유효성 검사와 같은 다른 많은 비트도 가능합니다.



2

Visual Studio 2017 IDE를 설치하지 않고 서버에서이 작업을 수행했습니다. 내 요구 사항은

  • 프로젝트 구축
  • 테스트 프로젝트 구축
  • VSTest를 사용하여 테스트 실행 (MSTest와 비슷한 프로세스라고 생각합니다)

나는 다른 답변에 명시된 몇 가지 일을 조합 한 다음 여기에 또 다른 일을해야 했습니다 .

VS2017 :

  1. BuildTools - Microsoft 다운로드 페이지 에서 찾을 수 있으며 "Tools for Visual Studio 2017"-> "Build Tools for Visual Studio 2017"까지 아래로 스크롤합니다.
  2. TestAgent - Microsoft 다운로드 페이지 에서 찾을 수 있으며 "Tools for Visual Studio 2017"-> "Agents for Visual Studio 2017"까지 아래로 스크롤합니다.
  3. Visual Studio 단위 테스트 dll을 포함하는 Nuget 패키지 - 여기 에서 찾을 수 있습니다.

3 단계는 다음 문제를 해결하는 것이 었습니다.

"이 참조를 확인할 수 없습니다."Microsoft.VisualStudio.QualityTools.UnitTestFramework "어셈블리를 찾을 수 없습니다."

그 다음 원인 :

"오류 CS0234 : 유형 또는 네임 스페이스 이름 'VisualStudio'가 네임 스페이스 'Microsoft'에 없습니다 (어셈블리 참조가 누락 되었습니까?)."

프로젝트에 대한 참조를 추가 할 필요가 없었습니다. 그러나 vstest.console.exe의 경로는 TestAgent 폴더에 포함되어 있습니다 (저는 "C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow"). )


1

다음은 VS 2012를 설치하지 않고 MsTest를 실행하도록 빌드 서버를 가져 오는 단계입니다.

  1. c : \ dev에 'Mstest'디렉터리 폴더를 생성했습니다.
  2. C : \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE에서 'Mstest.exe'및 'Mstest.exe.config'를 'Mstest'디렉터리로 복사했습니다.
  3. Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll을 'Mstest'디렉터리에 복사합니다.
  4. 'Mstest'폴더에 'assemblies'디렉터리 생성
  5. 모든 v11 Microsoft.VisualStudio.QualityTools. *. dll을 C : \ Windows \ assembly에서 'Mstest / assemblies'디렉터리로 추출했습니다.
  6. 모든 'v11'Microsoft.VisualStudio.QualityTools를 복사합니다. .dll 및 Microsoft.VisualStudio.TestTools. C : \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL에서 'Mstest / assemblies'로의 .dll
  7. 모든 v11 Microsoft.VisualStudio.QualityTools를 복사합니다. .dll 및 Microsoft.VisualStudio.TestTools. C : \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies에서 'Mstest / assemblies'로 .dll
  8. 'Mstest.exe.config'의 'privatePath'속성에 'assemblies'를 추가합니다.
  9. 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools를 내보내고 허드슨 박스에 적용합니다.
  10. QTAgent32.exe 및 QTAgent32.exe.config를 C : \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE에서 'MsTest'디렉터리로 복사합니다.
  11. 'QTAgent32.exe.config'의 'privatePath'속성에 'assemblies'를 추가합니다.
  12. 'msdia110.dll'을 'C : \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger'에서 'MsTest / assemblies'로 복사합니다.
  13. c : /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'에 'msdia110.dll'등록 (오류가 발생했지만 어떤 이유로 여전히 작동했습니다. 몇 번 실행했습니다. 확인하기 전에 다른 regsvr32.exe 버전을 시도했지만 레지스트리에 있습니다)

  14. 환경 변수 'MSTEST_HOME'을 추가하고 'c : \ dev \ mstest \'또는 경로에 설정합니다. 빌드 스크립트에서 환경 변수를 사용했습니다.

MsTest 실행 오류 디버깅 :

'MsTest.exe.config'에 추가

<system.diagnostics> 
  <trace autoflush="true" indentsize="4"> 
    <listeners> 
      <add name="EqtListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\MsTest.log" /> 
    </listeners> 
  </trace> 
  <switches> 
    <add name="EqtTraceLevel" value="Verbose" /> 
  </switches> 
</system.diagnostics>

0

mstest.exe webtest 도구를 실행해야하는 경우 Visual Studio Enterprise 평가판을 설치하고 추가 작업을 수행 할 필요없이 테스트를 실행할 계정으로 한 번 이상 실행 (시작)하십시오. 따라서 테스트가 시스템 계정으로 실행되면 아래와 같은 것을 사용해야합니다.

PS C:\agent> psexec -s cmd.exe
C:\Windows\system32>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\mstest.exe"
Microsoft (R) Test Execution Command Line Tool Version 15.0.27520.0
Copyright (c) Microsoft Corporation. All rights reserved.

Please specify tests to run, or specify the /publish switch to publish results.
For switch syntax, type "MSTest /help"

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