Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
VSTest.Console.exe è lo strumento da riga di comando per eseguire i test. È possibile specificare diverse opzioni in qualsiasi ordine nella riga di comando. Queste opzioni sono elencate in opzioni della riga di comando generale.
Nota
L'adapter MSTest in Visual Studio funziona anche in modalità legacy (equivalente all'esecuzione di test con mstest.exe) per garantire la compatibilità. In modalità legacy non può sfruttare la funzionalità TestCaseFilter. L'adattatore può passare alla modalità legacy quando viene specificato un file testsettings, forcelegacymode è impostato su true in un file runsettings oppure usando attributi come HostType.
Per eseguire test automatizzati in un computer basato sull'architettura arm, è necessario usare VSTest.Console.exe.
Aprire prompt dei comandi per sviluppatori per usare lo strumento da riga di comando oppure è possibile trovare lo strumento in %Program Files(x86)%\Microsoft Visual Studio\<versione>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft>.
Opzioni generali della riga di comando
Nella tabella seguente sono elencate le opzioni comunemente usate per VSTest.Console.exe e le descrizioni brevi. È possibile visualizzare un riepilogo simile digitando VSTest.Console/? in una riga di comando. Per informazioni di riferimento complete, incluse le opzioni interne e legacy che non sono elencate qui, vedere vstest.console.exe opzioni della riga di comando e opzioni omesse in modo specifico nel repository vstest.
| Opzione | Descrizione |
|---|---|
| [test dei nomi di file] | Eseguire test dai file specificati. Separare più nomi di file di test con spazi. Esempi: mytestproject.dll, mytestproject.dll myothertestproject.exe |
| /Settings:[nome file] | Eseguire test con impostazioni aggiuntive, ad esempio agenti di raccolta dati. Per altre informazioni, vedere Configurare unit test usando un file con estensione runsettings Esempio: /Settings:local.runsettings |
| /Tests:[ nome test] | Eseguire test con nomi che contengono i valori specificati. Questo comando corrisponde al nome completo del test, incluso lo spazio dei nomi . Per fornire più valori, separarli in base a virgole. Esempio: /Tests:TestMethod1,testMethod2L'opzione della riga di comando /Tests non può essere usata con l'opzione della riga di comando /TestCaseFilter . |
| /Parallel | Specifica che i test devono essere eseguiti in parallelo. Per impostazione predefinita, è possibile usare fino a tutti i core disponibili nel computer. È possibile configurare il numero di core da usare in un file di impostazioni. |
| /InIsolation | Esegue i test in un processo isolato. Questo isolamento rende meno probabile che il processo vstest.console.exe venga arrestato in caso di errore nei test, ma i test potrebbero essere eseguiti più lentamente. |
| /TestAdapterPath:[ percorso] | Forza il processo vstest.console.exe a usare adattatori di test personalizzati da un percorso specificato (se presente) nell'esecuzione del test. Esempio: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[tipo di piattaforma] | Forza l'uso dell'architettura della piattaforma specificata, anziché la piattaforma determinata dal runtime corrente. I valori non fanno distinzione tra maiuscole e minuscole; I valori accettati sono x86, x64, ARM64ARM, S390x, Ppc64le, , RiscV64e LoongArch64.In Windows, solo x86 e x64 possono essere forzati in modo affidabile; specificando ARM i risultati in x64 nella maggior parte dei sistemi. Non specificare questa opzione per l'esecuzione in un runtime che non si trova nell'elenco di valori validi. |
| /Framework: [versione framework] | Versione .NET di destinazione da usare per l'esecuzione di test. I moduli brevi del framework moderno vengono accettati e analizzati dal parser del framework NuGet, ad esempio net48, net6.0o net10.0 (nonché i moduli lunghi come .NETFramework,Version=v4.8 e .NETCoreApp,Version=v10.0).Vengono accettati anche gli Framework35alias legacy , Framework40Framework45, FrameworkCore10, e FrameworkUap10 .TargetFrameworkAttribute viene usato per rilevare automaticamente questa opzione dall'assembly e per Framework40 impostazione predefinita quando l'attributo non è presente. È necessario specificare questa opzione in modo esplicito se si rimuove il TargetFrameworkAttribute dagli assembly .NET Core.Se il framework di destinazione viene specificato come Framework35, i test vengono eseguiti in CLR 4.0 "modalità di compatibilità". Esempio: /Framework:net8.0 |
| /TestCaseFilter:[expression] | Eseguire test che corrispondono all'espressione specificata. <Expression> è del formato <proprietà>=<valore>[|<Expression>]. Esempio: /TestCaseFilter:"Priority=1"Esempio: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"L'opzione della riga di comando /TestCaseFilter non può essere usata con l'opzione della riga di comando /Tests . Per informazioni sulla creazione e l'uso di espressioni, vedere filtro TestCase. Quando si digita un filtro direttamente in una shell, vedere Espressioni di filtro di escape nella shell. |
| /Environment:[NAME]=[VALUE] | Imposta il valore di una variabile di ambiente per il processo host di test. Crea la variabile, se non esiste, ed esegue l'override se lo fa. Questa opzione implica /InIsolation e forza l'esecuzione dei test in un processo isolato. Specificare l'opzione più volte per impostare più variabili. Forma breve: /e. Esempio: /e:VARIABLE1=VALUE1 |
| /? | Visualizza le informazioni sull'utilizzo. |
| /Logger:[ URI/friendlyname] | Specificare un logger per i risultati del test. Specificare il parametro più volte per abilitare più logger. Esempio: per registrare i risultati in un file dei risultati dei test di Visual Studio (TRX), usare /Logger:trx [; LogFileName=<Valori predefiniti per il nome di file univoco>] Usare LogFilePrefix=<prefix> invece di LogFileName mantenere un file separato e con timestamp per ogni esecuzione.
LogFileName imposta un nome esplicito e sovrascrive il file precedente, mentre LogFilePrefix non lo è.Per altre informazioni, vedere Esempio di registrazione. |
| /ListTests:[ nome file] | Elenca i test individuati dal contenitore di test specificato. Forma breve: /lt. Nota: l'opzione /TestCaseFilter non ha alcun effetto quando si elencano i test; controlla solo i test che vengono eseguiti. |
| /Blame | Esegue i test in modalità di colpa. Questa opzione è utile per isolare i test problematici che causano l'arresto anomalo dell'host di test. Quando viene rilevato un arresto anomalo, crea un file di sequenza in TestResults/<Guid>/<Guid>_Sequence.xml che acquisisce l'ordine dei test eseguiti prima dell'arresto anomalo.È anche possibile raccogliere un dump di arresto anomalo o di blocco, ad esempio /Blame:CollectDump;DumpType=full o /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. Le opzioni equivalenti dotnet test sono --blame-crash e --blame-hang.Per i requisiti completi relativi alla matrice di opzioni e alla raccolta di dump, vedere l'articolo relativo alla colpa dell'agente di raccolta dati. |
| /Diag:[nome file] | Scrive i log di traccia di diagnostica nel file specificato. Impostare il livello di traccia con /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> (il valore predefinito è verbose). |
| /ResultsDirectory:[ percorso] | Se non esiste, la directory dei risultati del test verrà creata nel percorso specificato. Esempio: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | ID processo del processo padre responsabile dell'avvio del processo corrente. |
| /Port:[ porta] | Porta per la connessione socket e ricezione dei messaggi dell'evento. |
| /Collect:[dataCollector friendlyName] | Abilita l'agente di raccolta dati per l'esecuzione del test. Altre informazioni. |
| @[file] | Legge le opzioni aggiuntive dal file di risposta specificato. Gli argomenti nel file sono separati da spazi vuoti (spazi o righe nuove) e sono supportate le virgolette, in modo che le opzioni possano estendersi su più righe. Esempio: vstest.console.exe @options.rsp |
Mancia
Le opzioni e i valori non fanno distinzione tra maiuscole e minuscole.
Esempi
La sintassi per l'esecuzione di vstest.console.exe è:
vstest.console.exe [TestFileNames] [Options]
Per impostazione predefinita, il comando restituisce 0 quando viene chiuso normalmente, anche se non vengono individuati test. Se si desidera restituire un valore diverso da zero se non vengono individuati test, usare <TreatNoTestsAsError>true</TreatNoTestsAsError>'opzione runsettings.
Il comando seguente esegue vstest.console.exe per la libreria di test myTestProject.dll:
vstest.console.exe myTestProject.dll
Il comando seguente esegue vstest.console.exe con più file di test. Separare i nomi dei file di test con spazi:
vstest.console.exe myTestFile.dll myOtherTestFile.dll
Il comando seguente esegue vstest.console.exe con diverse opzioni. Esegue i test nel file myTestFile.dll in un processo isolato e usa le impostazioni specificate nel file Local.RunSettings. Inoltre, esegue solo i test contrassegnati come "Priority=1" e registra i risultati in un file trx.
vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx
Il comando seguente esegue vstest.console.exe con l'opzione /blame per la libreria di test myTestProject.dll:
vstest.console.exe myTestFile.dll /blame
Se si verifica un arresto anomalo dell'host di test, viene generato il file sequence.xml. Il file contiene nomi completi dei test nella sequenza di esecuzione fino a e include il test specifico in esecuzione al momento dell'arresto anomalo.
Se non è presente alcun arresto anomalo dell'host di test, il file disequence.xml non verrà generato.
Esempio di file sequence.xml generato:
<?xml version="1.0"?>
<TestSequence>
<Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
<Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>
In questo caso, l'ultimo <Test Name> è il test in esecuzione al momento dell'arresto anomalo.
Codici di uscita
vstest.console.exe restituisce uno dei due codici di uscita:
| Codice | Meaning |
|---|---|
0 |
Successo. L'operazione richiesta è stata completata e, per un'esecuzione di test, tutti i test eseguiti sono stati superati. |
1 |
Fallimento. Ad esempio, uno o più test non riusciti, è stato segnalato un errore di esecuzione, la riga di comando non è valida o manca, non è stato possibile caricare un'origine di test o l'esecuzione è stata interrotta o annullata. |
Il processo non restituisce mai alcun altro valore. Quando si eseguono test tramite dotnet test, il .NET SDK visualizza un codice di uscita diverso da zero quando l'esecuzione ha esito negativo nello stesso modo.
Quando l'individuazione non trova test corrispondenti, lo strumento di esecuzione stampa un avviso anziché un errore e per impostazione predefinita restituisce 0comunque . Per eseguire un'esecuzione che individua o seleziona zero test restituiti 1 , impostare <TreatNoTestsAsError>true</TreatNoTestsAsError> nell'elemento RunConfiguration del file con estensione runsettings . Per altre informazioni, vedere Configurare unit test usando un file con estensione runsettings.
Espressioni di filtro di escape nella shell
Un'espressione /TestCaseFilter viene analizzata sia dalla shell che dalla piattaforma di test, quindi alcuni caratteri richiedono l'escape specifico della shell prima chevstest.console.exe li riceva. La citazione dell'intera espressione, come negli esempi precedenti in questo articolo, evita la maggior parte dei problemi. I casi seguenti richiedono assistenza aggiuntiva:
PowerShell: la virgola (
,) è l'operatore di matrice e il punto e virgola (;) è un separatore di istruzioni. Virgolette l'intera espressione di filtro in modo che venga passata letteralmente, ad esempio/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".Bash e zsh (Linux e macOS): escape
!con una barra rovesciata quando si usa l'operatore!~(non contiene), ad esempio--filter FullyQualifiedName\!~IntegrationTestscondotnet test. Virgolette anche valori che contengono caratteri con un significato speciale per la shell, ad esempio<,>o,in un elenco di argomenti di tipo generico:dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
Per informazioni di riferimento sui filtri completi e sulle proprietà supportate per ogni framework di test, vedere Filtro TestCase.
Esempio di registrazione
Ogni logger definisce i propri parametri. A differenza di trx, il logger della console consente di impostare il livello di dettaglio. Per altre informazioni, digitare nella riga di VSTest.Console/? comando.
Di seguito è riportato un esempio per il logger della console:
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
I livelli di dettaglio supportati includono livelli di dettaglio silenziosi, minimi, normali e dettagliati.
In PowerShell è necessario usare le virgolette:
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
Per l'elenco completo dei logger disponibili, nonché le istruzioni per la creazione di un logger personalizzato, vedere Creazione di report sui risultati dei test nel repository vstest.
Esempio UWP
Per la piattaforma UWP, è necessario fare riferimento al file appxrecipe anziché a una DLL.
vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe
Variabili di ambiente
La piattaforma di test riconosce diverse variabili di ambiente. Di seguito sono riportati quelli più utili quando si eseguono test dalla riga di comando. Per l'elenco completo, vedere Variabili di ambiente riconosciute dalla piattaforma di test nel repository vstest.
| Variable | Descrizione |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
Timeout, in secondi, per stabilire connessioni tra componenti della piattaforma di test (vstest.console.exe, testhost e agente di raccolta dati). Il valore predefinito è 90. Aumentarlo nei computer lenti o quando la latenza di rete causa timeout di connessione. |
VSTEST_DIAG |
Abilita la registrazione diagnostica e specifica il percorso del file di log. Equivalente all'opzione /Diag . |
VSTEST_DIAG_VERBOSITY |
Imposta il livello di dettaglio della registrazione diagnostica quando VSTEST_DIAG è abilitato. I valori validi sono Verbose, Info, Warninge Error (il valore predefinito è Verbose). |
VSTEST_HOST_DEBUG |
Impostare su qualsiasi valore non vuoto per abilitare il debug del processo testhost. |
VSTEST_RUNNER_DEBUG |
Impostare su qualsiasi valore non vuoto per abilitare il debug dello strumento di esecuzione (vstest.console.exe). |
VSTEST_DUMP_PATH |
Esegue l'override della directory predefinita in cui vengono archiviati i dump di arresto anomalo del sistema. |
VSTEST_DUMP_FORCEPROCDUMP |
Impostare su qualsiasi valore non vuoto per forzare l'uso di ProcDump per la raccolta di dump di arresto anomalo del sistema. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
Impostare su 1 per disabilitare l'impostazione della codifica UTF-8 nell'output della console. |
VSTEST_CONSOLE_PATH |
Percorso dell'eseguibile vstest.console.exe usato dall'app di inoltro di dotnet test .NET SDK. Equivale a -p:VSTestConsolePath quando si esegue dotnet test in un progetto. |