Risposte:
È 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:
Questa risposta riguarda specificamente Visual Studio 2017 e la risposta è sì . Tieni presente, tuttavia, che Microsoft (ancora) non fornisce alcun tipo di API ufficiale per individuare gli eseguibili pertinenti ( MSBuild.exe
e MSTest.exe
), quindi sei bloccato a leggere le chiavi di registro e / o sondare varie directory per individuare questi file . Sei stato avvertito.
MSTest.TestFramework
in quei progetti e rimuovi il riferimento a Microsoft.VisualStudio.QualityTools.UnitTestFramework
da essi. Ora tutto ciò di cui hai bisogno è installare gli strumentimsbuild.exe
di compilazione di Visual Studio 2017 e invocare per eseguire la compilazione.MSTest.exe
e vstest.console.exe
che potrai quindi chiamare. Si noti che in realtà capire dove risiedono questi eseguibili è un problema, perché non esisteranno nella stessa struttura di directory MSBuild.exe
di Build Tools.Infine, e cosa molto importante: se usi MSTest.TestFramework
e devi ancora essere in grado di scoprire ed eseguire test dall'IDE di Visual Studio, dovrai anche essere MSTest.TestAdapter
installato 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.
File extension specified '.webtest' is not a valid test extension.
me.
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.
No test is available in C:\Users\..\Desktop\MyExeName.exe...
. Ho aperto una domanda su SO . Se hai qualche indizio, apprezzerei il tuo aiuto.
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.
@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.
Ho appena funzionato sui miei server senza installare l'IDE di Visual Studio 2017. La mia esigenza era
Ho dovuto fare una combinazione di alcune cose indicate in altre risposte e poi anche un'altra qui .
VS2017:
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" )
Ecco i passaggi che ho seguito per fare in modo che il mio server di compilazione esegua MsTest senza installare VS 2012:
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)
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>
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"