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