Usa Microsoft.Testing.Platform con dotnet test
Questo articolo descrive come usare dotnet test
per eseguire i test quando si usa Microsoft.Testing.Platform
e le varie opzioni disponibili per configurare l'output di MSBuild generato durante l'esecuzione di test tramite Microsoft.Testing.Platform.
Questo articolo illustra come usare dotnet test
per eseguire tutti i test in una soluzione (*.sln) che usa Microsoft.Testing.Platform
.
dotnet test
integrazione
Il comando dotnet test consente di eseguire test da soluzioni, progetti o assembly già compilati.
Microsoft.Testing.Platform si collega a questa infrastruttura per offrire un modo unificato per eseguire i test, soprattutto quando si esegue la migrazione da VSTest a Microsoft.Testing.Platform
.
modalità VSTest - integrazione dotnet test
Microsoft.Testing.Platform
offre un livello di compatibilità (VSTest Bridge) per lavorare con dotnet test
senza problemi.
I test possono essere eseguiti eseguendo:
dotnet test
Questo livello esegue test tramite VSTest e si integra con esso a livello di adattatore del framework di test VSTest.
dotnet test
- Modalità Microsoft.Testing.Platform
Per impostazione predefinita, dotnet test
usa il comportamento vsTest per eseguire i test. È possibile abilitare il supporto per Microsoft.Testing.Platform
in dotnet test
specificando l'impostazione <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
nel file di progetto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<!-- Add this to your project file. -->
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<!-- ... -->
</Project>
Nota
È consigliabile impostare la proprietà TestingPlatformDotnetTestSupport
in Directory.Build.props
. In questo modo, non è necessario aggiungerlo a ogni file di progetto di test e non si rischia di introdurre un nuovo progetto che non imposta questa proprietà e terminare con una soluzione in cui alcuni progetti sono VSTest, mentre altri sono Microsoft.Testing.Platform, che potrebbero non funzionare correttamente e non sono supportati.
Importante
Nonostante TestingPlatformDotnetTestSupport
impostato su true
, la maggior parte delle opzioni della riga di comando definite in test dotnet rimangono orientate a VSTest e non influiscono sui test basati su Microsoft.Testing.Platform
. Per fornire argomenti a Microsoft.Testing.Platform
, è necessario utilizzare uno dei metodi descritti in sugli argomenti della riga di comando Microsoft.Testing.Platform con dotnet test.
L'elenco seguente descrive tutte le opzioni della riga di comando dotnet test
supportate da Microsoft.Testing.Platform
:
-a|--arch <ARCHITECTURE>
--artifacts-path <ARTIFACTS_DIR>
-c|--configuration <CONFIGURATION>
-f|--framework <FRAMEWORK>
-e|--environment <NAME="VALUE">
--interactive
--no-build
--nologo
--no-restore
-o|--output <OUTPUT_DIRECTORY>
--os <OS>
-r|--runtime <RUNTIME_IDENTIFIER>
-v|--verbosity <LEVEL>
Questi argomenti sono supportati perché sono collegati al passaggio di compilazione e sono indipendenti dalla piattaforma di test usata.
Microsoft.Testing.Platform
argomenti della linea di comando con dotnet test
È possibile specificare argomenti usati per chiamare l'applicazione di test in uno dei modi seguenti:
A partire da
Microsoft.Testing.Platform
versione 1.4 (inclusa in MSTest versione 3.6), è possibile aggiungere opzioni dopo il trattino doppio--
nella riga di comando:dotnet test -- --minimum-expected-tests 10
Usando la proprietà
TestingPlatformCommandLineArguments
MSBuild nella riga di comando:dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
Oppure nel file di progetto:
<PropertyGroup> ... <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments> </PropertyGroup>
Opzioni aggiuntive di MSBuild
L'integrazione di MSBuild fornisce opzioni che possono essere specificate nel file di progetto o tramite proprietà globali nella riga di comando, ad esempio -p:TestingPlatformShowTestsFailure=true
.
Queste sono le opzioni disponibili:
Mostra un errore per test
Per impostazione predefinita, gli errori di test vengono riepilogati in un file .log e viene segnalato un singolo errore per ogni progetto di test a MSBuild.
Per visualizzare gli errori per ogni test non riuscito, specificare -p:TestingPlatformShowTestsFailure=true
nella riga di comando o aggiungere la proprietà <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
al file di progetto.
Nella riga di comando:
dotnet test -p:TestingPlatformShowTestsFailure=true
In alternativa, nel file di progetto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
</PropertyGroup>
<!-- ... -->
</Project>
Mostra output completo della piattaforma
Per impostazione predefinita, tutti gli output della console scritti dall'eseguibile di test sottostante vengono acquisiti e nascosti all'utente. Sono inclusi il banner, le informazioni sulla versione e le informazioni sul test formattato.
Per visualizzare queste informazioni insieme all'output di MSBuild, usare <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
.
Questa opzione non influisce sul modo in cui il framework di test acquisisce l'output utente scritto da Console.WriteLine
o altri modi simili per scrivere nella console.
Nella riga di comando:
dotnet test -p:TestingPlatformCaptureOutput=false
In alternativa, nel file di progetto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
</PropertyGroup>
<!-- ... -->
</Project>
Importante
Tutti gli esempi precedenti aggiungono proprietà come EnableMSTestRunner
, TestingPlatformDotnetTestSupport
e TestingPlatformCaptureOutput
nel file csproj. È tuttavia consigliabile impostare queste proprietà in Directory.Build.props
. In questo modo, non è necessario aggiungerlo a ogni file di progetto di test e non si rischia di introdurre un nuovo progetto che non imposta queste proprietà e terminare con una soluzione in cui alcuni progetti sono VSTest, mentre altri sono Microsoft.Testing.Platform, che potrebbero non funzionare correttamente e non sono supportati.