Condividi tramite


Usa Microsoft.Testing.Platform con dotnet test

Questo articolo descrive come usare dotnet test per eseguire i test quando si usa Microsoft.Testing.Platforme 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, TestingPlatformDotnetTestSupporte 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.