¿Puedo usar mstest.exe sin instalar Visual Studio?

108

Quiero usar mstest.exe para ejecutar mi prueba unitaria en el servidor de compilación, pero no quiero instalar Visual Studio en el servidor de compilación. ¿Puedo instalar MSTest sin Visual Studio?

yang-qu
fuente
¿Puede proporcionar un poco más de detalle? ¿Qué versión? ¿Construir servidor? etc
Richard Banks

Respuestas:

168

Es posible ejecutar mstest.exe sin Visual Studio.
Descargue uno de los agentes ISO de Visual Studio a continuación e instale el agente de prueba en el servidor:

Visual Studio 2017 (127 MB de espacio en disco, menos que para la descarga)
Visual Studio 2015 (configuración de 128 MB, se requieren 2 GB de espacio en disco)
Visual Studio 2012 (224 MB)
Visual Studio 2013 (287 MB)
Visual Studio 2010 (515 MB)

Esto instala todo lo necesario para ejecutar mstest.exe desde la línea de comandos y es mucho más liviano que Visual Studio. ~ 500 MB de descarga y alrededor de ~ 300 MB para instalar solo el agente de prueba si no recuerdo mal.

ACTUALIZAR

Para versiones anteriores a VS 2017, mire aquí:

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

Bela
fuente
¿Dónde se coloca MsTest.exe después de instalar TestAgent y TestController?
Evgeny Levin
3
C: \ Archivos de programa \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole
1
¿Existe algún agente para Visual Studio 2008?
Tomas Kubes
3
Mi grupo tuvo un problema después de instalar los agentes de prueba de Visual Studio 2012. Creemos que modificó algunos de los valores del registro y, en consecuencia, hizo un desastre con las cosas de Visual Studio 2010 que estaban en la misma máquina. Tener cuidado.
Stephen
1
Link para 2015 está muerto. Los agentes de ensayo se pueden encontrar a través de visualstudio.com/downloads/?q=agents
Onots
18

Esta respuesta se refiere específicamente a Visual Studio 2017, y la respuesta es . Sin embargo, tenga en cuenta que Microsoft (todavía) no proporciona ningún tipo de API oficial para localizar los ejecutables relevantes ( MSBuild.exey MSTest.exe), por lo que está atascado leyendo las claves de registro y / o probando varios directorios para localizar estos archivos . Has sido advertido.

  • Si solo necesita construir su (s) proyecto (s) de prueba unitaria, instale el paquete MSTest.TestFrameworken esos proyectos y elimine la referencia a Microsoft.VisualStudio.QualityTools.UnitTestFrameworkde ellos. Ahora todo lo que necesita es instalar Visual Studio 2017 Build Tools e invocar msbuild.exepara realizar la compilación.
  • Si también necesita ejecutar sus pruebas, las cosas se vuelven más complicadas:
    • La solución más sencilla es instalar VS2017 Community Edition (que incluye tanto msbuild como mstest), pero no estoy seguro de la legalidad de esto y no soy abogado, ¡así que tenga cuidado!
    • Una solución legalmente más segura (y mucho más liviana, en términos de espacio en disco) es instalar Visual Studio 2017 Test Agent y luego Build Tools para Visual Studio 2017 (el orden exacto es vital 1 ); esto le dará MSTest.exey vstest.console.exeluego podrá llamarlo. Tenga en cuenta que averiguar dónde residen estos ejecutables es una molestia, porque no existirán en la misma estructura de directorios que MSBuild.exeen las herramientas de compilación.

Finalmente, y lo que es más importante: si usa MSTest.TestFrameworky aún necesita poder descubrir y ejecutar pruebas desde el IDE de Visual Studio, también necesitará MSTest.TestAdapterinstalarlo en sus proyectos de prueba unitaria.

1: Si bien VS2017 admite instalaciones en paralelo, utiliza una única clave de registro que solo registra la instalación más reciente. Por lo tanto, si instala Test Agent por último, la clave apuntará a su directorio de instalación ... pero Test Agent no lo incluye MSBuild.exe, por lo que cualquier código que se base en esta clave de registro para averiguar la ruta del ejecutable fallará. Por qué Microsoft no pudo haber hecho del Agente de prueba una parte opcional de las herramientas de compilación (para que todos los EXE vivan en la misma jerarquía de directorios) es una incógnita.

Ian Kemp
fuente
Instalado a través del método Test Agent pero mstest.exe aún falla File extension specified '.webtest' is not a valid test extension..
Gregory Suvalian
Ahora hay vswhere : consulte otras preguntas, por ejemplo, " Encontrar el directorio de instalación VS2017 mediante programación " o " No se encontró MSBuild.exe, cmd.exe ", que lo utilizan.
Wai Ha Lee
@WaiHaLee vswherees mejor que nada, pero aún debe suponer dónde se encuentra MSBuild en relación con el directorio de instalación de VS ... si (¿cuándo?) Microsoft decide reubicar cualquiera de esos ejecutables, esa suposición ya no es válida . Por qué Microsoft no puede o no quiere crear una forma programática para obtener la ruta a MSBuild / MSTest / VSTest (a diferencia del directorio de instalación de VS, que a nadie realmente le importa) queda fuera de mi alcance.
Ian Kemp
Sí, el juego es molesto. Estoy seguro de que tienen sus razones, pero ...
Wai Ha Lee
@Ian Kemp Según lo anterior, instalé el agente de prueba y las herramientas de compilación, pero recibo un error No test is available in C:\Users\..\Desktop\MyExeName.exe... . He abierto una pregunta sobre SO . Si tiene alguna pista, agradecería su ayuda.
user1207289
4

Creo que probablemente puedas, pero definitivamente no es compatible.

Encontré este artículo de blog escrito por alguien que afirma tener MSTest funcionando sin Visual Studio instalado.

Justin
fuente
Cualquier URL con la palabra Hacking realmente requiere cuestionar el valor del esfuerzo si MS decide cambiar su implementación, su entorno podría ser volátil y podrían suceder cosas inesperadas con cada actualización de Windows (mantenemos actualizaciones regulares, ¿verdad?).
Russell
En este caso, parece poco probable que una actualización de Windows rompa el truco. Pero la versión más reciente de mstest (por ejemplo, dentro de una versión más reciente o un paquete de servicio de VS) puede funcionar de manera diferente.
Doc Brown
@Russell: Personalmente, pagaría una licencia VS adicional o simplemente usaría NUnit en su lugar.
Justin
Gracias por todas las respuestas, obtendré una licencia adicional de VS.
yang-qu
1
Como autor de la publicación de blog anterior, puedo dar fe de que funciona y que es muy poco probable que se rompa. Al menos para VS2008. No he mirado esto para VS2010. El hecho de que MSTest esté tan profundamente integrado en VS es una gran debilidad del kit de prueba, pero no creo que MS lo solucione, ya que anima a las personas a usar Team System.
foxxtrot
4

@crocpulsar, necesita instalar Visual Studio en su servidor de compilación, pero NO necesita comprar una licencia adicional .

Hay demasiadas dependencias para que build & MSTest funcionen sin VS instalado, y definitivamente no es compatible.

Siempre que la persona que inicia la compilación tenga una licencia, no la necesita para el servidor de compilación. Este ha sido el caso desde los días oscuros de 2005, y mientras haya paridad de edición, entonces está bien.

Si todos en su equipo tienen Ultimate, entonces puede instalarlo en el servidor de compilación; pero si uno de los miembros de su equipo tiene Premium, idealmente debería instalar Premium en el servidor de compilación. Esto también habilita muchos otros bits como Cobertura de código, Análisis de impacto de prueba y Validación de arquitectura, entre otros.

MrHinsh - Martin Hinshelwood
fuente
Como referencia, aquí hay una publicación de microsoft en este blogs.msdn.com/b/jeffbe/archive/2008/03/18/…
Maslow
2

Acabo de hacer que esto funcione en mis servidores sin instalar el IDE de Visual Studio 2017. Mi requisito era

  • Construir proyectos
  • Construir proyectos de prueba
  • Ejecute pruebas usando VSTest (creo que es un proceso similar para MSTest)

Tuve que hacer una combinación de algunas cosas indicadas en otras respuestas y luego también otra aquí .

VS2017:

  1. BuildTools : se puede encontrar en la página de descargas de Microsoft y luego desplácese hacia abajo hasta "Herramientas para Visual Studio 2017" -> "Herramientas de compilación para Visual Studio 2017"
  2. TestAgent : se puede encontrar en la página de descargas de Microsoft y luego desplácese hacia abajo hasta "Herramientas para Visual Studio 2017" -> "Agentes para Visual Studio 2017".
  3. Paquete Nuget para incluir el dll de prueba de unidad de Visual Studio: esto se puede encontrar aquí

El paso 3 fue solucionar el siguiente problema:

"No se pudo resolver esta referencia. No se pudo ubicar el ensamblado" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

Que luego causó:

"error CS0234: el tipo o el nombre del espacio de nombres 'VisualStudio' no existe en el espacio de nombres 'Microsoft' (¿le falta una referencia de ensamblado?)"

No tuve que agregar ninguna referencia al proyecto. Sin embargo, la ruta al vstest.console.exe está contenida en la carpeta TestAgent (para mí era "C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow" )

Andy
fuente
1

Estos son los pasos que tomé para que mi servidor de compilación ejecute MsTest sin instalar VS 2012:

  1. Se creó la carpeta del directorio 'Mstest' en c: \ dev.
  2. Copiado 'Mstest.exe' y 'Mstest.exe.config' de C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE al directorio 'Mstest'
  3. Copie Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll al directorio 'Mstest'
  4. Se creó el directorio 'ensamblados' en la carpeta 'Mstest'
  5. Se extrajeron todos los Microsoft.VisualStudio.QualityTools. *. Dlls v11 de C: \ Windows \ assembly al directorio 'Mstest / assemblies'
  6. Copie todo Microsoft.VisualStudio.QualityTools 'v11'. .dlls y Microsoft.VisualStudio.TestTools. .dlls de C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL a 'Mstest / assemblies'
  7. Copie todos los Microsoft.VisualStudio.QualityTools v11. .dlls y Microsoft.VisualStudio.TestTools. .dll desde C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies a 'Mstest / assemblies'
  8. Agregue 'ensamblados' al atributo 'privatePath' de en 'Mstest.exe.config'
  9. Exporte 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools y aplíquelo a hudson box.
  10. Copie QTAgent32.exe y QTAgent32.exe.config al directorio 'MsTest' desde C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. Agregue 'ensamblados' al atributo 'privatePath' de en 'QTAgent32.exe.config'
  12. Copie 'msdia110.dll' de 'C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger' a 'MsTest / assemblies'
  13. Registre 'msdia110.dll' con c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'(Esto arrojó un error, pero por alguna razón aún funcionó. Lo ejecuté un par veces y probé diferentes versiones de regsvr32.exe antes de verificar, pero está allí en el registro)

  14. Agregue la variable de entorno 'MSTEST_HOME' y configúrela en 'c: \ dev \ mstest \' o en su ruta. Usé la variable de entorno en mi script de compilación.

Error de ejecución de depuración de MsTest:

Agregar a '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>
Dai Le
fuente
0

Si necesita ejecutar la herramienta de prueba web mstest.exe, puede instalar la versión de prueba de Visual Studio Enterprise y asegurarse de ejecutarla al menos una vez (simplemente iníciela) en la cuenta bajo la cual se ejecutará la prueba sin que sea necesario hacer nada adicional. Entonces, si su prueba se ejecuta en la cuenta del sistema, entonces debe usar algo como a continuación

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"
Gregory Suvalian
fuente
0

MSTest fue anunciado para usuarios de .NET Core . El anuncio tiene un ejemplo de uso con la dotnetherramienta. No me he imaginado cómo obtener el mstestejecutable independiente .

user7610
fuente
Enlace roto :-(
James
1
@James Acaba de arreglar el enlace
user7610