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


AZ MSTest SDK áttekintése

Az MSTest.Sdk egy MSBuild project SDK az MSTest-alkalmazások létrehozásához. Ez az SDK nélkül is létrehozhat MSTest-alkalmazást, az MSTest SDK azonban a következő:

  • Úgy alakítottuk ki, hogy első osztályú élményt nyújtson az MSTesttel való teszteléshez.
  • A legtöbb felhasználó számára ajánlott cél.
  • Egyszerűen konfigurálható más felhasználók számára.

Alapértelmezés szerint az MSTest SDK a Microsoft.Testing.Platform MSTest-futójával felderíti és futtatja a teszteket. A VSTest használatára való áttéréshez adja meg a <UseVSTest>true</UseVSTest>

A projektben a MSTest.Sdk szolgáltatást egyszerűen engedélyezheti azáltal, hogy frissíti a projekt Sdk csomópontjának Project attribútumát.

<Project Sdk="MSTest.Sdk/3.10.2">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Feljegyzés

/3.10.2 példaként szolgál, és bármely újabb verzióra lecserélhető.

A verziók kezelésének egyszerűsítése érdekében javasoljuk, hogy az SDK-verziót a megoldás szintjén állítsa be a global.json fájl használatával. A projektfájl például a következőképpen nézne ki:

<Project Sdk="MSTest.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Ezután adja meg a verziót MSTest.Sdk a global.json fájlban az alábbiak szerint:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

További információ: MSBuild projekt SDK-k használata.

A build projekt során a rendszer az összes szükséges összetevőt visszaállítja és telepíti a projekt által beállított standard NuGet-munkafolyamat használatával.

A tesztek létrehozásához és futtatásához nincs szükség másra, dotnet test és használhatja ugyanazt az eszközt (például a Visual Studiót), amelyet egy "klasszikus" MSTest-projekt használ.

Fontos

A váltással MSTest.Sdkaz MSTest-futót is használhatja (lehetővé teszi a Microsoft.Testing.Platform for MSTest használatát), beleértve a dotnet-teszteket is. Ehhez módosítani kell a CI-t és a helyi CLI-hívásokat, és hatással van a .runsettings elérhető bejegyzéseire is. Használhatja MSTest.Sdk és megtarthatja a régi integrációkat és eszközöket azáltal, hogy átkapcsolja a futót. Alapértelmezés szerint az MSTest.Sdk beállítja EnableMSTestRunner és TestingPlatformDotnetTestSupport igaz értékre állítja. A dotnet-tesztről és a Microsoft.Testing.Platform futtatásának különböző módjairól további információt a Dotnet-teszttel végzett tesztelés című témakörben talál.

Segédkódtárak tesztelése

Ha az MSTest.Sdk-t használó projekt egy teszt segédprogram segédkönyvtára, és önmagában nem tartalmaz futtatható teszteket, a projektnek rendelkeznie <IsTestApplication>false</IsTestApplication>kell .

Válassza ki a futót

Az MSTest SDK alapértelmezés szerint a Microsoft.Testing.Platform-ra támaszkodik, de átválthat VSTest-re a <UseVSTest>true</UseVSTest>tulajdonság hozzáadásával.

A Microsoft.Testing.Platform kiterjesztése

A Microsoft.Testing.Platformélményt egy készlet NuGet-csomagbővítmények segítségével szabhatja testre. A felhasználói élmény egyszerűsítése és javítása érdekében az MSTest SDK két funkciót vezet be:

Microsoft.Testing.Platform-profil

A profilok fogalma lehetővé teszi a tesztprojektre alkalmazott konfigurációk és bővítmények alapértelmezett készletének kiválasztását.

A profilt a következő három profil egyikével állíthatja be a tulajdonsággal TestingExtensionsProfile :

Íme egy teljes példa a None profil használatával:

<Project Sdk="MSTest.Sdk/3.10.2">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

</Project>
Bővítmény/profil Egyik sem Alapértelmezett AllMicrosoft
Kódlefedettség ✔️ ✔️
Hibakép ✔️
hamisítványok ✔️¹
lefagyás állapotmentése ✔️
forró újratöltés ✔️
Újrapróbálkozás ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+

Bővítmények engedélyezése vagy letiltása

A bővítményeket az MSBuild tulajdonságok a mintával Enable[NugetPackageNameWithoutDots]engedélyezhetik és tilthatják le.

Ha például engedélyezni szeretné az összeomlási memóriakép bővítményt (NuGet-csomag Microsoft.Testing.Extensions.CrashDump), a következő tulajdonság beállításával teheti meg EnableMicrosoftTestingExtensionsCrashDump: true.

<Project Sdk="MSTest.Sdk/3.10.2">

<PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

</Project>

Az összes elérhető bővítmény listáját a Microsoft.Testing.Platform bővítményei között találja.

Figyelmeztetés

Fontos áttekinteni az egyes bővítmények licencfeltételeit, mivel ezek eltérőek lehetnek.

Az engedélyezett és a letiltott bővítmények a kiválasztott bővítményprofil által biztosított bővítményekkel vannak kombinálva.

Ez a tulajdonságminta egy további bővítmény engedélyezésére használható az implicit Default profilon (ahogy az előző CrashDumpExtension-példában is látható).

A kijelölt profilból származó bővítményeket is letilthatja. Például tiltsa le a MS Code Coverage kiterjesztést a következő beállítással <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>.

<Project Sdk="MSTest.Sdk/3.10.2">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

</Project>

Funkciók

A futó és a futóspecifikus bővítmények kiválasztásán kívül további funkciókat is biztosít a MSTest.Sdk tesztelési élmény leegyszerűsítéséhez és javításához.

Tesztelés az Aspire használatával

Az Aspire egy irányelvekkel rendelkező, felhőre kész technológiai halmaz, amely megfigyelhető, élesítésre kész, elosztott alkalmazások létrehozására szolgál. Az Aspire nuGet-csomagok gyűjteményén keresztül érhető el, amelyek bizonyos natív felhőbeli problémákat kezelnek. További információ: Aspire docs.

Feljegyzés

Ez a funkció az MSTest.Sdk 3.4.0-s verzióban érhető el.

A tulajdonság EnableAspireTesting értékének true-re állításával behozhatja az összes szükséges függőséget és alapértelmezett using direktívát a teszteléshez a Aspire és MSTest használatával.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

</Project>

Teszt forgatókönyvíróval

A Playwright lehetővé teszi a modern webalkalmazások megbízható, végpontok közötti tesztelését. További információkért lásd a hivatalos drámaíró dokumentációját.

Feljegyzés

Ez a funkció az MSTest.Sdk 3.4.0-s verzióban érhető el.

Ha beállítja a EnablePlaywright tulajdonságot true-re, behozhatja az összes függőséget és az alapértelmezett using irányelveket, amelyek szükségesek a Playwright és a MSTest teszteléséhez.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

</Project>

Migrálás AZ MSTest SDK-ba

Vegye figyelembe az alábbi lépéseket az MSTest SDK-ba való migráláshoz.

A projekt frissítése

Meglévő MSTest-tesztprojekt MSTest SDK-ba való migrálásakor először cserélje le a Sdk="Microsoft.NET.Sdk" tesztprojekt tetején lévő bejegyzést a következőre: Sdk="MSTest.Sdk"

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

Adja hozzá a verziót a global.json-hez:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

Ezután elkezdheti egyszerűsíteni a projektet.

Alapértelmezett tulajdonságok eltávolítása:

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Az alapértelmezett csomaghivatkozások eltávolítása:

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Végül a használt bővítményprofil alapján eltávolíthat néhány Microsoft.Testing.Extensions.* csomagot is.

Frissítse a saját CI-jét

Miután frissítette a projekteket, ha (alapértelmezett) használja Microsoft.Testing.Platform , és ha a tesztek futtatására dotnet test támaszkodik, frissítenie kell a CI-konfigurációt. További információkért és az összes szükséges módosítás megértéséhez tekintse meg a dotnet tesztintegrációját.

Ha a VSTest módot dotnet testhasználja, íme egy példafrissítés a DotNetCoreCLI feladat Azure DevOpsban való használatakor:

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Ismert korlátozások

A NuGet által biztosított MSBuild SDK-k (beleértve az MSTest.Sdk-t is) korlátozott eszköztámogatással rendelkeznek a verziójuk frissítésekor, ami azt jelenti, hogy a NuGet-csomagok kezelésére szolgáló szokásos NuGet-frissítés és Visual Studio felhasználói felület nem a várt módon működik. Manuálisan kell frissítenie a verziót a global.json fájlban és a projektfájlban. (Ez akkor is érvényes, ha a Dependabotot a dependabot-core#12824 és a dependabot-core#8615 problémák miatt használja.)

Lásd még