Overzicht van MSTest

MSTest, Microsoft Testing Framework, is een volledig ondersteund, opensource- en platformoverschrijdend testframework voor .NET-toepassingen. Hiermee kunt u tests schrijven en uitvoeren, en biedt testsuites met integratie met Visual Studio en Visual Studio Code Test Explorers, de .NET CLI en veel CI-pijplijnen.

MSTest wordt gehost op GitHub en werkt met alle ondersteunde .NET-doelen.

Belangrijkste kenmerken

MSTest biedt uitgebreide testmogelijkheden:

  • Gegevensgestuurde tests: voer tests uit met meerdere invoergegevens met behulp van DataRow, DynamicDataen externe gegevensbronnen.
  • Levenscyclusbeheer testen: instellen en opschonen op assembly-, klasse- en testniveaus.
  • Parallelle uitvoering: voer tests gelijktijdig uit om de uitvoeringstijd te verminderen.
  • Organisatie testen: categoriseren, prioriteren en filteren van tests met metagegevenskenmerken.
  • Codeanalyses: veelvoorkomende problemen detecteren en best practices afdwingen tijdens het compileren.
  • Asserties: Uitgebreide assertiemethoden voor het valideren van resultaten.

Ondersteunde platforms

MSTest ondersteunt een breed scala aan .NET-platforms en doelframeworks. De volgende tabel bevat een overzicht van platformondersteuning en speciale overwegingen:

Platform Doelarchitecturen Ondersteuning voor threading Speciale kenmerken Opmerkingen
.NET .NET 8+ Volledige parallelle uitvoering Alle kenmerken Aanbevolen voor nieuwe projecten
.NET Framework 4.6.2+ Volledige parallelle uitvoering Alle kenmerken Volledige ondersteuning voor functies
UWP UAP 10, .NET 9+ met UAP UI thread UITestMethod Gebruik VSTest. Moderne .NET UWP vereist<UseUwp>true</UseUwp>; zie UWP-voorbeeld
WinUI 3 .NET 8+ UI thread UITestMethod Vereist Windows App SDK; zie WinUI 3-apps testen met MSTest en MTP
Systeemeigen AOT .NET 8+ Volledige parallelle uitvoering De meeste kenmerken Beperkte functieset; zie Systeemeigen AOT-voorbeeld
Browser WebAssembly .NET 10+ aangepaste host Met één thread Limited Aangepaste Microsoft. Ondersteuning voor testing.Platform-hosts begint met MSTest 4.4

Platformspecifieke overwegingen

UWP-tests

UWP-tests worden uitgevoerd in de UWP-app-container en vereisen de UI-thread voor veel bewerkingen:

[TestClass]
public class UwpTests
{
    [UITestMethod]
    public void TestUwpControl()
    {
        // Test runs on UI thread
        var button = new Button();
        Assert.IsNotNull(button);
    }
}

Gebruik VSTest voor klassieke UWP en moderne .NET UWP omdat beide worden uitgevoerd in een AppContainer. Zie het BlankUwpNet9App-voorbeeld voor een moderne .NET UWP-installatie.

WinUI 3 testen

WinUI 3-tests vereisen ook ui-threadtoegang voor het testen van visuele onderdelen:

[TestClass]
public class WinUITests
{
    [UITestMethod]
    public void TestWinUIControl()
    {
        // Test runs on UI thread
        var window = new MainWindow();
        Assert.IsNotNull(window);
    }
}

Zie WinUI 3-apps testen testen met MSTest en MTP om uitgepakte of verpakte WinUI 3-tests te configureren.

Vanaf MSTest 4.4 Microsoft. Testing.Platform biedt ook ondersteuning voor uitgepakte WinUI-testtoepassingen. VSTest biedt geen ondersteuning voor dit scenario. Zie het uitgepakte WinUI-voorbeeld voor installatiedetails.

Inheemse AOT

Systeemeigen AOT-compilatie wordt ondersteund met enkele beperkingen vanwege verminderde reflectiemogelijkheden. Gebruik waar mogelijk brongeneratoren en test uw AOT-scenario's met het NativeAotRunner-voorbeeld.

Browser WebAssembly

Vanaf MSTest 4.4 kan een aangepaste .NET 10-browserwebassembly-host aanroepen AddMSTest om tests uit te voeren vanaf een msTest-assembly waarnaar wordt verwezen. Stel EnableMSTestRunner in het hostproject in op true en GenerateTestingPlatformEntryPoint zo false dat de aangepaste host eigenaar is van het toegangspunt van de toepassing. Houd de MSTest en Microsoft. De versies van testing.Platform-pakketten zijn uitgelijnd.

In een webassembly-runtime met één thread kan MSTest time-outtests niet onderbreken en worden startopties voor foutopsporingsprogramma's niet ondersteund. Zie het BrowserPlayground-voorbeeld voor een volledige host.

Ondersteuning voor STA-threading

Voor Windows COM-interoperabiliteitsscenario's biedt STATestClass MSTest en STATestMethod kenmerken voor het uitvoeren van tests in een appartement met één thread. Zie UseSTASynchronizationContext voor meer informatie over STA-threading, inclusief ondersteuning voor asynchrone vervolgondersteuning met.

Testlopers

MSTest ondersteunt twee testuitvoeringsplatforms:

  • Microsoft.Testing.Platform (MTP): het moderne, aanbevolen testplatform met verbeterde prestaties en uitbreidbaarheid.
  • VSTest: het oorspronkelijke en standaardtestplatform voor .NET.

Voor nieuwe projecten raden we u aan MTP te gebruiken met MSTest.Sdk.

MSTest-ondersteuningsbeleid

Sinds v3.0.0 volgt MSTest strikt semantische versiebeheer.

Het MSTest-team ondersteunt alleen de nieuwste uitgebrachte versie en moedigt gebruikers sterk aan om altijd bij te werken naar de nieuwste versie om te profiteren van verbeteringen en beveiligingspatches. Preview-versies worden niet ondersteund door Microsoft, maar worden aangeboden voor openbare tests vóór de definitieve release.

Versiegeschiedenis

MSTest heeft een aanzienlijke evolutie ondergaan in primaire versies:

  • MSTest v1: het oorspronkelijke Visual Studio-testframework
  • MSTest v2: Eerste opensource-release met platformoverschrijdende ondersteuning
  • MSTest v3: Modern herschrijven met verbeterde architectuur en functies
  • MSTest v4: Huidige versie met verbeterde functies

Note

MSTest 4.4 is in ontwikkeling vanaf augustus 2026. Voor functies die zijn gemarkeerd als geïntroduceerd in MSTest 4.4, is een preview-build vereist totdat versie 4.4.0 is uitgebracht.

Zie het msTest-wijzigingenlogboek voor meer informatie over alle releases.

Als u een upgrade uitvoert van een oudere versie, raadpleegt u de migratiehandleidingen:

Brekende wijzigingen

Het MSTest-team beoordeelt zorgvuldig en minimaliseert belangrijke wijzigingen. Wanneer belangrijke wijzigingen nodig zijn, gebruikt het team GitHub-aankondigingen en belangrijke wijzigingslabels om de community vroeg te informeren, zodat gebruikers tijd hebben om feedback te geven en zorgen te maken voordat wijzigingen worden uitgebracht.

Volgende stappen