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, CombinatorialDataen DynamicDataexterne 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 10+ met UWP-hulpprogramma's UI thread UITestMethod MSTest 4.5 en MTP 2.5 ondersteunen klassieke en moderne UWP via de MSTest.Sdk-app-model-sidecar
WinUI 3 .NET 8+ UI thread UITestMethod MTP ondersteunt verpakte, uitgepakte en AppContainer-hosts; zie UWP- en WinUI 3-apps testen met MSTest en MTP
automatisering van de bureaubladgebruikersinterface Windows .NET 8+ Windows doel STA STATestClass MSTest 4.5 preview kan uitgepakte Win32-, Windows Forms- en WPF-apps starten en een venster beschikbaar maken via Windows UI Automation
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 Ondersteuning voor MTP-uitvoering begint met MSTest 4.4
WASI WebAssembly .NET 10+ aangepaste host Met één thread Limited Ondersteuning voor MTP-uitvoering 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);
    }
}

Vanaf MSTest 4.5 en MTP 2.5 gebruikt u MSTest.Sdk om klassieke UWP- en moderne .NET UWP-tests via MTP uit te voeren. Een full-trust sidecar registreert en activeert het pakket, autoriseert de exacte pakket-SID van de app voor MTP-communicatie en kopieert resultaatartefacten uit pakketopslag.

Moderne UWP vereist .NET 10 UseUwpen de Visual Studio UWP-buildhulpprogrammaketen. Klassieke UWP behoudt de bestaande uap10.0 projectvorm. Zie het moderne UWP-voorbeeld en het klassieke UWP-voorbeeld voor volledige configuraties.

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);
    }
}

MTP ondersteunt verpakte full-trust-, niet-verpakte en als AppContainer geconfigureerde WinUI 3-testtoepassingen. MSTest.Sdk start uitgepakte apps rechtstreeks en gebruikt de sidecar van het app-model om verpakte apps te registreren en te activeren.

AppContainer-ondersteuning vereist MSTest 4.5 en MTP 2.5 of hoger. VSTest biedt geen ondersteuning voor uitgepakte WinUI 3. Zie UWP- en WinUI 3-apps testen met MSTest en MTP voor meer informatie over de installatie.

automatisering van de bureaubladgebruikersinterface Windows

Het MSTest.Windows.UIAutomation pakket integreert het levenscyclusbeheer van MSTest met Windows UI Automation voor uitgepakte Win32-, Windows Forms- en WPF-toepassingen. Zie Test Windows desktop-apps met MSTest UI Automation voor instellingen, beperkingen en basisklassen ApplicationTestWindowTest.

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 en WASI WebAssembly

MSTest 4.4 ondersteunt aangepaste .NET 10-browser- of WASI WebAssembly-hosts. Als u tests wilt uitvoeren vanuit een MSTest-assembly waarnaar wordt verwezen, roept u aan AddMSTest. Stel in het hostproject in EnableMSTestRunner op true en GenerateTestingPlatformEntryPoint op false. Houd de MSTest- en MTP-pakketversies uitgelijnd.

In een webassembly-runtime met één thread kan MSTest een time-outtest niet geforceerd onderbreken. Wachten op de debugger wordt niet ondersteund in browsers of WASI, en de browser biedt geen ondersteuning voor opstartopties voor de debugger.

MTP kan TRX-data streamen en artefacten van test- en sessiebestanden rapporteren via het WebAssembly-virtuele bestandssysteem en het artefactkanaal van de host. Azure DevOps publiceren werkt alleen wanneer de host ondersteunde HTTP-toegang en de vereiste pijplijnverificatie biedt. Deze functies verlenen geen onbeperkte hostbestandssysteem- of netwerktoegang.

Zie het BrowserPlayground-voorbeeld voor een volledige browserhost.

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.5 is vanaf oktober 2026 in ontwikkeling. Voor functies die zijn gemarkeerd als geïntroduceerd in MSTest 4.5 is een preview-build vereist totdat versie 4.5.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