Posso usar mstest.exe sem instalar o Visual Studio?

108

Desejo usar mstest.exe para executar meu teste de unidade no servidor de compilação, mas não desejo instalar o Visual Studio no servidor de compilação. Posso apenas instalar o MSTest sem o Visual Studio?

yang-qu
fonte
Você pode fornecer um pouco mais de detalhes. Qual versão? Construir servidor? etc
Richard Banks

Respostas:

168

É possível executar mstest.exe sem o Visual Studio.
Baixe um dos Agentes para ISO do Visual Studio abaixo e instale o Agente de Teste no servidor:

Estúdio 2017 Visual (espaço em disco 127MB, menor do que para download)
Visual Studio 2015 (instalação de 128 MB, espaço em disco são necessários 2 GB)
Visual Studio 2012 (224MB)
Visual Studio 2013 (287MB)
Visual Studio 2010 (515MB)

Isso instala tudo o que é necessário para executar mstest.exe a partir da linha de comando e é muito mais leve do que o Visual Studio. Download de cerca de 500 MB e cerca de 300 MB para instalar apenas o agente de teste, se bem me lembro.

ATUALIZAR

Para versões anteriores ao VS 2017, veja aqui:

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

Bela
fonte
Onde o MsTest.exe é colocado após a instalação do TestAgent e do TestController?
Evgeny Levin
3
C: \ Arquivos de programas \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole
1
Existe algum agente para Visual Studio 2008?
Tomas Kubes
3
Meu grupo teve um problema depois de instalar os agentes de teste do Visual Studio 2012. Achamos que ele modificou alguns dos valores do registro e, consequentemente, bagunçou as coisas do Visual Studio 2010 que estavam na mesma máquina. Cuidado.
stephen
1
Link para 2015 está morto. Os agentes de teste agora podem ser encontrados em visualstudio.com/downloads/?q=agents
Onots
18

Essa resposta se refere especificamente ao Visual Studio 2017 e a resposta é sim . Esteja ciente, entretanto, que a Microsoft (ainda) não fornece nenhum tipo de API oficial para localizar os executáveis ​​relevantes ( MSBuild.exee MSTest.exe), portanto, você não consegue ler as chaves do registro e / ou sondar vários diretórios para localizar esses arquivos . Voce foi avisado.

  • Se você só precisa construir seu (s) projeto (s) de teste de unidade, instale o pacote MSTest.TestFrameworknesses projetos e remova a referência a Microsoft.VisualStudio.QualityTools.UnitTestFrameworkdeles. Agora tudo o que você precisa é instalar as Ferramentas de Compilação do Visual Studio 2017 e invocar msbuild.exepara executar a compilação.
  • Se você também precisar executar seus testes, as coisas ficarão mais complicadas:
    • A solução mais simples é instalar o VS2017 Community Edition (que inclui msbuild e mstest) - mas não tenho certeza da legalidade disso e não sou advogado, então tome cuidado!
    • Uma solução legalmente mais segura (e muito mais leve, em termos de espaço em disco) é instalar o Visual Studio 2017 Test Agent e então Build Tools for Visual Studio 2017 ( a ordem exata é vital 1 ); isso lhe dará MSTest.exee para o vstest.console.exequal você poderá recorrer. Observe que descobrir onde residem esses executáveis ​​é uma dor, porque eles não existirão na mesma estrutura de diretórios das MSBuild.exeFerramentas de Construção.

Finalmente, e muito importante: se você usa MSTest.TestFrameworke ainda precisa ser capaz de descobrir e executar testes de dentro do IDE do Visual Studio, também precisará MSTest.TestAdapterinstalar em seu (s) projeto (s) de teste de unidade.

1: Embora o VS2017 suporte instalações lado a lado, ele usa uma única chave de registro que registra apenas a instalação mais recente. Portanto, se você instalar o Test Agent por último, a chave apontará para seu diretório de instalação ... mas o Test Agent não inclui MSBuild.exe, portanto, qualquer código que dependa dessa chave de registro para descobrir o caminho do executável falhará. Por que a Microsoft não poderia ter tornado o Agente de Teste uma parte opcional das Ferramentas de Construção (para que todos os EXEs vivam na mesma hierarquia de diretório), ninguém sabe.

Ian Kemp
fonte
Instalado através do método Test Agent, mas mstest.exe ainda falha File extension specified '.webtest' is not a valid test extension.comigo.
Gregory Suvalian
Agora há vswhere - veja outras perguntas, por exemplo, " Encontrando programaticamente o diretório de instalação do VS2017 " ou " MSBuild.exe não encontrado, cmd.exe " que o usa.
Wai Ha Lee
@WaiHaLee vswhereé melhor do que nada, mas você ainda deve fazer uma suposição de onde o MSBuild está localizado em relação ao diretório de instalação do VS ... se (quando?) A Microsoft decidir realocar qualquer um desses executáveis, essa suposição não é mais válida . Por que a Microsoft não pode ou não quer criar uma maneira programática de obter o caminho para MSBuild / MSTest / VSTest (em oposição ao diretório de instalação do VS, com o qual ninguém realmente se importa) permanece além de mim.
Ian Kemp
Sim, o jogo é ou não é irritante. Tenho certeza que eles têm seus motivos, mas ...
Wai Ha Lee
@Ian Kemp Por exemplo, instalei o agente de teste e as ferramentas de construção, mas estou recebendo um erro No test is available in C:\Users\..\Desktop\MyExeName.exe... . Eu abri uma pergunta no SO . Se você tem alguma pista, eu agradeço sua ajuda.
user1207289
4

Eu acho que você provavelmente pode, mas definitivamente não é compatível.

Encontrei este artigo de blog escrito por alguém que afirma ter o MSTest funcionando sem o Visual Studio instalado.

Justin
fonte
Qualquer URL com a palavra Hacking realmente requer questionar o valor do esforço se a MS decidir mudar sua implementação, seu ambiente pode ser volátil e coisas inesperadas podem acontecer a cada atualização do Windows (mantemos atualizações regulares, certo?).
Russell
Nesse caso, parece improvável que uma atualização do Windows interrompa o hack. Mas a versão mais recente do mstest (por exemplo, dentro de uma versão mais recente ou service pack do VS) pode funcionar de maneira diferente.
Doc Brown
@Russell - Pessoalmente, eu pagaria por uma licença extra do VS ou apenas usaria o NUnit.
Justin
Obrigado por todas as respostas, vou apenas obter uma licença extra do VS.
yang-qu
1
Como autor da postagem do blog acima, posso atestar que funciona e que é altamente improvável que falhe. Pelo menos para VS2008. Eu não olhei para isso para VS2010. O fato de o MSTest estar tão profundamente integrado ao VS é uma grande fraqueza do kit de teste, mas não acho que o MS vai consertar isso, pois incentiva as pessoas a usar o Team System.
foxxtrot
4

@crocpulsar, você precisa instalar o Visual Studio em seu servidor de compilação, mas NÃO precisa comprar uma licença adicional .

Existem muitas dependências para fazer o build & MSTest funcionar sem o VS instalado, e definitivamente não é suportado.

Contanto que a pessoa que inicia a construção tenha uma licença, você não precisa de uma para o servidor de construção. Esse tem sido o caso desde os dias sombrios de 2005 e, enquanto houver paridade de edição, você está OK.

Se todos em sua equipe tiverem o Ultimate, você poderá instalá-lo no servidor de compilação; mas se um dos membros da sua equipe tiver Premium, você deve instalar o Premium no servidor de compilação. Isso também permite muitos outros bits, como cobertura de código, análise de impacto de teste e validação de arquitetura, entre outros.

MrHinsh - Martin Hinshelwood
fonte
Para referência, aqui está uma postagem da microsoft neste blogs.msdn.com/b/jeffbe/archive/2008/03/18/…
Maslow
2

Acabei de fazer isso funcionar em meus servidores sem instalar o Visual Studio 2017 IDE. Minha exigência era

  • Construir projetos
  • Construir projetos de teste
  • Execute testes usando VSTest (acredito que seja um processo semelhante ao MSTest)

Eu tive que fazer uma combinação de algumas coisas declaradas em outras respostas e também outra aqui .

VS2017:

  1. BuildTools - pode ser encontrado na página de downloads da Microsoft e, em seguida, role para baixo até "Ferramentas para Visual Studio 2017" -> "Ferramentas de compilação para Visual Studio 2017"
  2. TestAgent - pode ser encontrado na página de downloads da Microsoft e, em seguida, role para baixo até "Ferramentas para Visual Studio 2017" -> "Agentes para Visual Studio 2017"
  3. Pacote Nuget para incluir a dll de teste de unidade do Visual Studio - Isso pode ser encontrado aqui

A etapa 3 foi corrigir o seguinte problema:

"Não foi possível resolver esta referência. Não foi possível localizar o assembly" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

O que então causou:

"erro CS0234: O tipo ou nome de namespace 'VisualStudio' não existe no namespace 'Microsoft' (falta uma referência de assembly?)"

Não precisei adicionar nenhuma referência ao projeto. No entanto, o caminho para vstest.console.exe está contido na pasta TestAgent (para mim era "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow" )

Andy
fonte
1

Aqui estão as etapas que executei para fazer com que meu servidor de compilação executasse o MsTest sem instalar o VS 2012:

  1. Criada a pasta do diretório 'Mstest' em c: \ dev.
  2. Copiados 'Mstest.exe' e 'Mstest.exe.config' de C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE para o diretório 'Mstest'
  3. Copie Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll para o diretório 'Mstest'
  4. Criado o diretório 'assemblies' na pasta 'Mstest'
  5. Extraiu todas as v11 Microsoft.VisualStudio.QualityTools. *. Dlls de C: \ Windows \ assembly para o diretório 'Mstest / assemblies'
  6. Copie todos os Microsoft.VisualStudio.QualityTools 'v11'. .dlls e Microsoft.VisualStudio.TestTools. .dlls de C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL para 'Mstest / assemblies'
  7. Copie todos os Microsoft.VisualStudio.QualityTools v11. .dlls e Microsoft.VisualStudio.TestTools. .dll de C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies para 'Mstest / assemblies'
  8. Adicione 'assemblies' ao atributo 'privatePath' de 'Mstest.exe.config'
  9. Exporte 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools e aplique-o à caixa hudson.
  10. Copie QTAgent32.exe e QTAgent32.exe.config para o diretório 'MsTest' de C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. Adicione 'assemblies' ao atributo 'privatePath' de 'QTAgent32.exe.config'
  12. Copie 'msdia110.dll' de 'C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger' para 'MsTest / assemblies'
  13. Registre 'msdia110.dll' com c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'(Isso gerou um erro, mas por algum motivo ainda funcionou. Executei alguns vezes e tentei diferentes versões do regsvr32.exe antes de verificar, mas está lá no registro)

  14. Adicione a variável de ambiente 'MSTEST_HOME' e defina-a como 'c: \ dev \ mstest \' ou em seu caminho. Usei a variável de ambiente em meu script de construção.

Erro de execução de depuração de MsTest:

Adicionar 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
fonte
0

Se você precisar executar a ferramenta webtest mstest.exe, poderá instalar a versão de avaliação do Visual Studio Enterprise e certificar-se de executá-la pelo menos uma vez (basta iniciá-la) na conta na qual o teste será executado, sem necessidade de fazer nada adicional. Portanto, se o seu teste for executado na conta do sistema, você precisará usar algo como abaixo

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
fonte
0

O MSTest foi anunciado para usuários do .NET Core . O anúncio tem exemplo de uso com a dotnetferramenta. Eu não descobri como obter o mstestexecutável autônomo .

usuário7610
fonte
O link está quebrado :-(
James
1
@James acabou de corrigir o link
user7610