Posso usare mstest.exe senza installare Visual Studio?


108

Voglio usare mstest.exe per eseguire il mio unit test sul build server, ma non voglio installare Visual Studio sul build server. Posso installare MSTest senza Visual Studio?


Puoi fornire qualche dettaglio in più. Quale versione? Costruire server? ecc.
Richard Banks

Risposte:


168

È possibile eseguire mstest.exe senza Visual Studio.
Scarica uno degli agenti per gli ISO di Visual Studio riportati di seguito e installa Test Agent sul server:

Visual Studio 2017 (127 MB di spazio su disco, inferiore a quello per il download)
Visual Studio 2015 (128 MB di configurazione, 2 GB di spazio su disco richiesti)
Visual Studio 2012 (224 MB)
Visual Studio 2013 (287 MB)
Visual Studio 2010 (515 MB)

Questo installa tutto il necessario per eseguire mstest.exe dalla riga di comando ed è molto più leggero di Visual Studio. ~ 500mb in download e circa ~ 300mb per installare solo l'agente di test, se ricordo bene.

AGGIORNARE

Per le versioni precedenti a VS 2017, guarda qui:

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


Dove viene posizionato MsTest.exe dopo l'installazione di TestAgent e TestController?
Evgeny Levin

3
C: \ Programmi \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole

1
Esiste un agente per Visual Studio 2008?
Tomas Kubes

3
Il mio gruppo ha riscontrato un problema dopo l'installazione degli agenti di test di Visual Studio 2012. Riteniamo che abbia modificato alcuni valori del registro e di conseguenza abbia creato un pasticcio di elementi di Visual Studio 2010 che si trovavano sulla stessa macchina. Attenzione.
stephen

1
Il collegamento per il 2015 è morto. Gli agenti di test possono ora essere trovati tramite visualstudio.com/downloads/?q=agents
Onots

18

Questa risposta riguarda specificamente Visual Studio 2017 e la risposta è . Tieni presente, tuttavia, che Microsoft (ancora) non fornisce alcun tipo di API ufficiale per individuare gli eseguibili pertinenti ( MSBuild.exee MSTest.exe), quindi sei bloccato a leggere le chiavi di registro e / o sondare varie directory per individuare questi file . Sei stato avvertito.

  • Se hai solo bisogno di creare i tuoi progetti di unit test, installa il pacchetto MSTest.TestFrameworkin quei progetti e rimuovi il riferimento a Microsoft.VisualStudio.QualityTools.UnitTestFrameworkda essi. Ora tutto ciò di cui hai bisogno è installare gli strumentimsbuild.exe di compilazione di Visual Studio 2017 e invocare per eseguire la compilazione.
  • Se è necessario eseguire anche i test, le cose diventano più complicate:
    • La soluzione più semplice è installare VS2017 Community Edition (che include sia msbuild che mstest), ma non sono sicuro della legalità di questo e non sono un avvocato, quindi fai attenzione!
    • Una soluzione legalmente più sicura (e molto più leggera, in termini di spazio su disco) consiste nell'installare Visual Studio 2017 Test Agent e quindi Build Tools per Visual Studio 2017 ( l'ordine esatto è fondamentale 1 ); questo ti darà MSTest.exee vstest.console.exeche potrai quindi chiamare. Si noti che in realtà capire dove risiedono questi eseguibili è un problema, perché non esisteranno nella stessa struttura di directory MSBuild.exedi Build Tools.

Infine, e cosa molto importante: se usi MSTest.TestFrameworke devi ancora essere in grado di scoprire ed eseguire test dall'IDE di Visual Studio, dovrai anche essere MSTest.TestAdapterinstallato nei tuoi progetti di unit test.

1: Sebbene VS2017 supporti le installazioni side-by-side, utilizza una singola chiave di registro che registra solo l'installazione più recente. Quindi, se installi Test Agent per ultimo, la chiave punterà alla sua directory di installazione ... ma Test Agent non include MSBuild.exe, quindi qualsiasi codice che si basa su questa chiave di registro per capire il percorso di quell'eseguibile, fallirà. Perché Microsoft non avrebbe potuto rendere l'agente di test una parte opzionale di Build Tools (in modo che tutti gli EXE risiedano nella stessa gerarchia di directory) è indovinato da chiunque.


Installato tramite il metodo dell'agente di prova ma mstest.exe non riesce ancora con File extension specified '.webtest' is not a valid test extension.me.
Gregory Suvalian,

Ora c'è vswhere - vedere altre domande, ad esempio " Ricerca programmatica della directory di installazione di VS2017 " o " MSBuild.exe non trovato, cmd.exe " che lo utilizzano.
Wai Ha Lee

@WaiHaLee vswhereè meglio di niente, ma devi comunque fare un'ipotesi su dove si trova MSBuild rispetto alla directory di installazione di VS ... se (quando?) Microsoft decide di riposizionare uno di quegli eseguibili, tale presupposto non è più valido . Perché Microsoft non può o non vuole creare un modo programmatico per ottenere il percorso per MSBuild / MSTest / VSTest (al contrario della directory di installazione di VS, di cui nessuno si preoccupa davvero) rimane oltre me.
Ian Kemp

Sì, il gioco è / non è fastidioso. Sono sicuro che hanno le loro ragioni, ma ...
Wai Ha Lee

@Ian Kemp Per sopra, ho installato l'agente di test e gli strumenti di compilazione ma ricevo un errore No test is available in C:\Users\..\Desktop\MyExeName.exe... . Ho aperto una domanda su SO . Se hai qualche indizio, apprezzerei il tuo aiuto.
user1207289

4

Penso che probabilmente puoi, ma sicuramente non è supportato.

Ho trovato questo articolo del blog scritto da qualcuno che afferma di avere MSTest funzionante senza Visual Studio installato.


Qualsiasi URL con la parola Hacking richiede davvero di mettere in discussione il valore dello sforzo se MS decide di cambiare la sua implementazione, il tuo ambiente potrebbe essere volatile e potrebbero accadere cose inaspettate con ogni aggiornamento di Windows (manteniamo aggiornamenti regolari, giusto?).
Russell

In questo caso, sembra improbabile che un aggiornamento di Windows interrompa l'hack. Ma la versione più recente di mstest (ad esempio, all'interno di una versione più recente o di un service pack di VS) potrebbe funzionare in modo diverso.
Doc Brown

@Russell - Personalmente sborserei una licenza VS aggiuntiva o userei invece NUnit.
Justin

Grazie per tutte le risposte, riceverò solo una licenza VS aggiuntiva.
yang-qu

1
Come autore del post sul blog di cui sopra, posso attestare che funziona e che è altamente improbabile che si rompa. Almeno per VS2008. Non l'ho guardato per VS2010. MSTest essendo così profondamente integrato in VS è un'enorme debolezza del kit di test, ma non credo che MS lo risolverà, poiché incoraggia le persone a utilizzare Team System.
foxxtrot

4

@crocpulsar, è necessario installare Visual Studio sul server di compilazione, ma NON è necessario acquistare una licenza aggiuntiva .

Ci sono troppe dipendenze per far funzionare build e MSTest senza VS installato, e in definitiva non è supportato.

Finché la persona che avvia la build ha una licenza, non è necessaria una licenza per il server di build. Questo è stato il caso dai giorni bui del 2005, e finché c'è parità di edizione allora sei OK.

Se tutti i membri del tuo team hanno Ultimate, sei libero di installarlo sul server di compilazione; ma se uno dei membri del tuo team ha Premium, dovresti idealmente installare Premium sul server di compilazione. Ciò consente anche molti altri bit come la copertura del codice, l'analisi dell'impatto dei test e la convalida dell'architettura, tra gli altri.


Per riferimento, ecco un post di microsoft su questo blogs.msdn.com/b/jeffbe/archive/2008/03/18/…
Maslow

2

Ho appena funzionato sui miei server senza installare l'IDE di Visual Studio 2017. La mia esigenza era

  • Realizza progetti
  • Crea progetti di test
  • Esegui test utilizzando VSTest (credo che sia un processo simile per MSTest)

Ho dovuto fare una combinazione di alcune cose indicate in altre risposte e poi anche un'altra qui .

VS2017:

  1. BuildTools : si trova nella pagina dei download di Microsoft , quindi scorri verso il basso fino a "Strumenti per Visual Studio 2017" -> "Strumenti di compilazione per Visual Studio 2017"
  2. TestAgent : si trova nella pagina dei download di Microsoft , quindi scorri verso il basso fino a "Strumenti per Visual Studio 2017" -> "Agenti per Visual Studio 2017"
  3. Pacchetto Nuget per includere la dll di unit test di Visual Studio - Questo può essere trovato qui

Il passaggio 3 consisteva nel risolvere il seguente problema:

"Impossibile risolvere questo riferimento. Impossibile individuare l'assembly" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

Che poi ha causato:

"errore CS0234: il tipo o il nome dello spazio dei nomi" VisualStudio "non esiste nello spazio dei nomi" Microsoft "(manca un riferimento all'assembly?)"

Non ho dovuto aggiungere alcun riferimento al progetto. Tuttavia, il percorso di vstest.console.exe è contenuto nella cartella TestAgent (per me era "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow" )


1

Ecco i passaggi che ho seguito per fare in modo che il mio server di compilazione esegua MsTest senza installare VS 2012:

  1. Creata cartella di directory "Mstest" in c: \ dev.
  2. Copiato "Mstest.exe" e "Mstest.exe.config" da C: \ Programmi (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE nella directory "Mstest"
  3. Copia Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll nella directory "Mstest"
  4. Directory "assembly" creata nella cartella "Mstest"
  5. Estratte tutte le dll Microsoft.VisualStudio.QualityTools. *. V11 da C: \ Windows \ assembly alla directory 'Mstest / assembly'
  6. Copia tutti i Microsoft.VisualStudio.QualityTools "v11". .dlls e Microsoft.VisualStudio.TestTools. .dll da C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL a "Mstest / assembly"
  7. Copia tutti i Microsoft.VisualStudio.QualityTools v11. .dlls e Microsoft.VisualStudio.TestTools. .dll da C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies a "Mstest / assembly"
  8. Aggiungi "assembly" all'attributo "privatePath" di "Mstest.exe.config"
  9. Esporta 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools e applicalo alla casella hudson.
  10. Copia QTAgent32.exe e QTAgent32.exe.config nella directory "MsTest" da C: \ Programmi (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. Aggiungi "assembly" all'attributo "privatePath" di in "QTAgent32.exe.config"
  12. Copia "msdia110.dll" da "C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger" a "MsTest / assembly"
  13. Registra "msdia110.dll" con c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'(Questo ha generato un errore, ma per qualche motivo ha funzionato ancora. L'ho eseguito un paio volte e ho provato diverse versioni di regsvr32.exe prima di controllare, ma è presente nel registro)

  14. Aggiungi la variabile d'ambiente "MSTEST_HOME" e impostala su "c: \ dev \ mstest \" o sul tuo percorso. Ho usato la variabile d'ambiente nel mio script di build.

Debug dell'errore di esecuzione di MsTest:

Aggiungi 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>

0

Se è necessario eseguire lo strumento webtest mstest.exe, è possibile installare la versione di prova di Visual Studio Enterprise e assicurarsi di eseguirla almeno una volta (basta avviarla) con l'account con cui verrà eseguito il test senza che sia necessario eseguire ulteriori operazioni. Quindi, se il tuo test viene eseguito con l'account di sistema, devi usare qualcosa come di seguito

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"

0

MSTest è stato annunciato per gli utenti .NET Core . L'annuncio ha un esempio di utilizzo con lo dotnetstrumento. Non ho capito come ottenere l' mstesteseguibile autonomo .


Il collegamento è interrotto :-(
James

1
@James ha appena corretto il collegamento
user7610
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.