답변:
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 이전 버전의 경우 여기를 참조하십시오.
이 대답은 특히 Visual Studio 2017과 관련이 있으며 대답은 yes 입니다. 그러나 Microsoft (여전히)는 관련 실행 파일 ( MSBuild.exe
및 MSTest.exe
) 을 찾기위한 공식 API를 제공하지 않으므로 이러한 파일을 찾기 위해 레지스트리 키를 읽거나 다양한 디렉토리를 조사해야합니다 . 경고를 받았습니다.
MSTest.TestFramework
해당 프로젝트에 패키지 를 설치 하고 참조를 제거 Microsoft.VisualStudio.QualityTools.UnitTestFramework
합니다. 이제 Visual Studio 2017 빌드 도구 를 설치 하고 호출 msbuild.exe
하여 빌드를 수행하기 만하면됩니다.MSTest.exe
하고 vstest.console.exe
있는 당신은 그에게 호출 할 수 있습니다. 이러한 실행 파일이 MSBuild.exe
빌드 도구에서 와 동일한 디렉토리 구조에 존재하지 않기 때문에 실제로 이러한 실행 파일이 어디에 있는지 파악하는 것은 힘든 일 입니다.마지막으로, 매우 중요한 점 : MSTest.TestFramework
Visual Studio IDE에서 테스트를 사용 하고 여전히 검색하고 실행할 수 있어야하는 MSTest.TestAdapter
경우 단위 테스트 프로젝트 에도 설치 해야 합니다.
1 : VS2017은 병렬 설치를 지원하지만 가장 최근 설치 만 기록하는 단일 레지스트리 키를 사용합니다. 따라서 Test Agent를 마지막으로 설치하면 키가 해당 설치 디렉터리를 가리 키지 만 Test Agent에는이 포함 MSBuild.exe
되어 있지 않으므로이 레지스트리 키를 사용하여 실행 파일의 경로를 알아내는 코드는 실패합니다. Microsoft가 테스트 에이전트를 빌드 도구의 선택적 부분으로 만들지 못한 이유는 (모든 EXE가 동일한 디렉터리 계층 구조에 있도록) 누구나 추측 할 수 있습니다.
File extension specified '.webtest' is not a valid test extension.
.
vswhere
가없는 것보다 낫지 만 VS 설치 디렉터리를 기준으로 MSBuild의 위치에 대해 여전히 가정해야합니다 ... (언제?) Microsoft가 이러한 실행 파일을 재배치하기로 결정하면 그 가정이 더 이상 유효하지 않습니다. . MSBuild / MSTest / VSTest (아무도 신경 쓰지 않는 VS 설치 디렉터리와 반대)에 대한 경로를 얻을 수있는 프로그래밍 방식을 Microsoft가 만들 수 없거나 만들지 않는 이유는 여전히 저 밖에 있습니다.
No test is available in C:\Users\..\Desktop\MyExeName.exe...
합니다. 그래서 질문을 열었습니다 . 단서가 있으면 도움을 주시면 감사하겠습니다.
나는 당신이 할 수 있다고 생각하지만 확실히 지원되지 않습니다.
Visual Studio를 설치하지 않고도 MSTest가 작동한다고 주장하는 사람이 작성한이 블로그 기사를 발견했습니다.
@crocpulsar, 빌드 서버에 Visual Studio를 설치해야 하지만 추가 라이선스를 구입할 필요는 없습니다 .
VS가 설치되지 않은 상태에서 빌드 및 MSTest가 작동하도록하는 데에는 너무 많은 의존성이 있으며, 이는 확실히 지원되지 않습니다.
빌드를 시작하는 사람이 라이센스를 가지고있는 한 빌드 서버에는 라이센스가 필요하지 않습니다. 이것은 2005 년의 암울한 날 이후로, 에디션 패리티가있는 한 괜찮습니다.
팀의 모든 구성원이 Ultimate를 가지고 있다면 빌드 서버에 자유롭게 설치할 수 있습니다. 하지만 팀원 중 한 명이 프리미엄을 보유하고 있다면 빌드 서버에 프리미엄을 설치하는 것이 이상적입니다. 이를 통해 코드 커버리지, 테스트 영향 분석 및 아키텍처 유효성 검사와 같은 다른 많은 비트도 가능합니다.
Visual Studio 2017 IDE를 설치하지 않고 서버에서이 작업을 수행했습니다. 내 요구 사항은
나는 다른 답변에 명시된 몇 가지 일을 조합 한 다음 여기에 또 다른 일을해야 했습니다 .
VS2017 :
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"). )
다음은 VS 2012를 설치하지 않고 MsTest를 실행하도록 빌드 서버를 가져 오는 단계입니다.
c : /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'에 'msdia110.dll'등록 (오류가 발생했지만 어떤 이유로 여전히 작동했습니다. 몇 번 실행했습니다. 확인하기 전에 다른 regsvr32.exe 버전을 시도했지만 레지스트리에 있습니다)
환경 변수 '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>
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"