MSTest SDK-konfiguráció

Ez a cikk az MSTest.Sdk speciális konfigurációs lehetőségeit ismerteti. Az alapvető beállításokhoz és az induláshoz tekintse meg az MSTest oldalát: Get started with MSTest.

Fontos

Az MSTest.Sdk alapértelmezés szerint az MTP-vel rendelkező MSTest-futót használja, 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. A régi integrációkat és eszközöket megtarthatja a VSTestre való váltással.

Az MSTest.Sdk alapértelmezés szerint igaz értékre állítja.EnableMSTestRunnerTestingPlatformDotnetTestSupport A dotnet-tesztről és a különböző módokró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ó project egy teszt segédprogram segédkönyvtárának szánták, és önmagában nem tartalmaz futtatható teszteket, a project <IsTestApplication>false</IsTestApplication> kell rendelkeznie.

Válassza ki a futót

Alapértelmezés szerint az MSTest SDK az MTP-re támaszkodik, de a <UseVSTest>true</UseVSTest> tulajdonság hozzáadásával átválthat VSTest-re.

MTP kiterjesztése

Az MTP-élményt NuGet-csomagbővítmények halmazával 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 lehetővé teszi a teszt project alkalmazni kívánt 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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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 ✔️
Hot Reload ✔️
Ú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.

Például az összeomlási memóriakép bővítmény engedélyezéséhez (NuGet-csomag Microsoft. Testing.Extensions.CrashDump) az alábbi EnableMicrosoftTestingExtensionsCrashDump tulajdonságot true értékre állíthatja:

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

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

</Project>

Az összes elérhető bővítmény listáját az MTP-funkciók 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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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 a Aspire

Aspire egy cloud-ready stack, amely magába foglalja az elosztott, megfigyelhető, éles üzemre kész alkalmazások felépítéséhez szükséges véleményvezérelt eszközkészletet. Aspire a NuGet-csomagok gyűjteményén keresztül érkezik, amelyek bizonyos felhő-natív szempontokat kezelnek. További információkért tekintse meg a Aspire dokumentumokat.

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/4.1.0">

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

</Project>

Teszt forgatókönyvíróval

A Playwright megbízható, végpontok közötti tesztelést tesz lehetővé a modern webalkalmazások számára. 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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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 project frissítése

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

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

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

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

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

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 MTP-t használ (alapértelmezett), é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 dotnet test VSTest üzemmódját használja, íme egy példa a DotNetCoreCLI feladatot az Azure DevOps-ban történő 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) tagolt eszközkészlet-támogatással rendelkeznek a verzió frissítésekor, ami azt jelenti, hogy a Szokásos NuGet-frissítés és a NuGet-csomagok kezelésére szolgáló Visual Studio felhasználói felület nem a várt módon működik. A verziót manuálisan kell frissítenie a global.json fájlban és a project fájlban. (Ez akkor is érvényes, ha a Dependabotot dependabot-core#12824 és dependabot-core#8615 problémák miatt használja.)

Lásd még