Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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.