Megosztás a következőn keresztül:


A Microsoft.Testing.Platform használata VSTest módban dotnet test

Ebben a cikkben a dotnet test Microsoft.Testing.Platform integrációját ismertetjük, amelyet a VSTest módban történő dotnet test futtatáskor a Microsoft.Testing.Platform.MSBuild biztosít.

Mielőtt belemerülnénk ebbe a cikkbe, javasoljuk, hogy először olvassa el a Tesztelés dotnetes teszttel című cikket, amely ismerteti a két módot dotnet test (VSTest és MTP mód).

Alapértelmezés szerint dotnet test a VSTest használatával futtatja a teszteket. A támogatás engedélyezéséhez a Microsoft.Testing.Platform a dotnet test-ben, két lehetőség közül választhat:

  1. Használja a dotnet test VSTest módban, és adja meg a <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> MSBuild tulajdonságot a projektfájlban.
  2. MTP dotnet test módban használható az MTP dotnet testnatívabb támogatásához, amely csak a .NET 10 SDK-tól kezdve támogatott.

Mindkét lehetőséget részletesen ismertetjük a Dotnet-teszttel foglalkozó cikkben.

Fontos

A cikk további része a VSTest módra dotnet testvonatkozik.

Figyelmeztetés

A .NET 10 SDK-tól kezdve ajánlott, hogy ne használja a VSTest módot dotnet test a Microsoft.Testing.Platform használatakor.

Hiba megjelenítése tesztenként

Alapértelmezés szerint a tesztelési hibák egy .log fájlba vannak összegezve, és tesztprojektenként egyetlen hiba lesz jelentve az MSBuildnek.

A sikertelen tesztenkénti hibák megjelenítéséhez adja meg a parancssorban a -p:TestingPlatformShowTestsFailure=true, vagy adja hozzá a <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> tulajdonságot a projektfájlhoz.

Parancssorban:

dotnet test -p:TestingPlatformShowTestsFailure=true

Vagy a projektfájlban:

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

Teljes platformkimenet megjelenítése

Alapértelmezés szerint minden konzolkimenet, amelyet a mögöttes teszt futtatható fájl ír, rögzítésre és elrejtésre kerül a felhasználó elől. Ez magában foglalja a szalagcímet, a verzióinformációkat és a formázott tesztelési információkat.

Ha az MSBuild kimenettel együtt szeretné megjeleníteni ezeket az információkat, használja a <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Ez a beállítás nem befolyásolja, hogy a tesztelési keretrendszer hogyan rögzíti a konzolra a Console.WriteLine-val vagy más hasonló módon írt felhasználói kimenetet.

Parancssorban:

dotnet test -p:TestingPlatformCaptureOutput=false

Vagy a projektfájlban:

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

Fontos

A fenti példák olyan tulajdonságokat adnak hozzá, mint a EnableMSTestRunner, a TestingPlatformDotnetTestSupportés a TestingPlatformCaptureOutput a csproj fájlban. Azonban erősen ajánlott, hogy ezeket a tulajdonságokat a Directory.Build.props-ban állítsd be. Így nem kell hozzáadnia minden tesztprojektfájlhoz, és nem kockáztatja meg, hogy olyan új projektet vezessen be, amely nem állítja be ezeket a tulajdonságokat, és végül olyan megoldást kapjon, ahol egyes projektek VSTestek, míg mások a Microsoft.Testing.Platform, ami nem biztos, hogy helyesen működik, és nem támogatott forgatókönyv.