Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
MSTest, Microsoft Testing Framework, är ett fullt stödt, plattformsoberoende testramverk med öppen källkod för .NET-applikationer. Det gör att du kan skriva och köra tester och tillhandahåller testpaket med integrering till Visual Studio och Visual Studio Code Test Explorers, .NET CLI och många CI-pipelines.
MSTest finns på GitHub och fungerar med alla .NET-mål som stöds.
Viktiga funktioner
MSTest tillhandahåller omfattande testfunktioner:
-
Datadriven testning: Kör tester med flera indata med hjälp av
DataRow,DynamicDataoch externa datakällor. - Testlivscykelhantering: Installation och rensning på sammansättnings-, klass- och testnivåer.
- Parallell körning: Kör tester samtidigt för att minska körningstiden.
- Testorganisation: Kategorisera, prioritera och filtrera tester med metadataattribut.
- Kodanalysverktyg: Identifiera vanliga problem och framtvinga metodtips vid kompileringstid.
- Intyg: Omfattande kontrollmetoder för validering av resultat.
Plattformar som stöds
MSTest stöder en mängd olika .NET-plattformar och målramverk. I följande tabell sammanfattas plattformsstöd och särskilda överväganden:
| Platform | Målramverk | Stöd för trådning | Särskilda attribut | Noteringar |
|---|---|---|---|---|
| .NET | .NET 8+ | Fullständig parallellisering | Alla attribut | Rekommenderas för nya projekt |
| .NET Framework | 4.6.2+ | Fullständig parallellisering | Alla attribut | Fullständigt funktionsstöd |
| UWP | UAP 10, .NET 9+ med UAP | UI-tråd | UITestMethod |
Använd VSTest. Modern .NET UWP kräver <UseUwp>true</UseUwp>; se UWP-exempel |
| WinUI 3 | .NET 8+ | UI-tråd | UITestMethod |
Kräver Windows App SDK; se Testa WinUI 3-appar med MSTest och MTP |
| Intern AOT | .NET 8+ | Fullständig parallellisering | De flesta attribut | Begränsad funktionsuppsättning; se exempel på intern AOT |
| Webbläsare WebAssembly | .NET 10+ anpassad värd | Enkeltrådad | Limited | Anpassad Microsoft. Testing.Platform-värdsupporten börjar med MSTest 4.4 |
Plattformsspecifika överväganden
UWP-testning
UWP-tester körs i UWP-appcontainern och kräver användargränssnittstråden för många åtgärder:
[TestClass]
public class UwpTests
{
[UITestMethod]
public void TestUwpControl()
{
// Test runs on UI thread
var button = new Button();
Assert.IsNotNull(button);
}
}
Använd VSTest för klassisk UWP och modern .NET UWP eftersom båda körs i en AppContainer. En modern .NET UWP-konfiguration finns i Exemplet BlankUwpNet9App.
WinUI 3-testning
WinUI 3-tester kräver också UI-trådåtkomst för testning av visuella komponenter:
[TestClass]
public class WinUITests
{
[UITestMethod]
public void TestWinUIControl()
{
// Test runs on UI thread
var window = new MainWindow();
Assert.IsNotNull(window);
}
}
Information om hur du konfigurerar uppackade eller paketerade WinUI 3-tester med fullständigt förtroende finns i Testa WinUI 3-appar med MSTest och MTP.
Från och med MSTest 4.4 Microsoft. Testing.Platform stöder även uppackade WinUI-testprogram. VSTest stöder inte det här scenariot. Information om konfiguration finns i exemplet med uppackade WinUI.
Inbyggd AOT
Naturlig AOT-kompilering stöds med vissa begränsningar på grund av begränsade reflektionsegenskaper. Använd källgeneratorer där det är möjligt och testa dina AOT-scenarier med NativeAotRunner-exemplet.
Webbläsare WebAssembly
Från och med MSTest 4.4 kan en anpassad .NET webAssembly-värd i 10 webbläsare anropa AddMSTest för att köra tester från en refererad MSTest-sammansättning. I värdprojektet anger du EnableMSTestRunner till och GenerateTestingPlatformEntryPoint till så att truefalse den anpassade värden äger programmets startpunkt. Behåll MSTest och Microsoft. Testing.Platform-paketversionerna är justerade.
På en enkeltrådad WebAssembly-körning kan MSTest inte avbryta tidsgränstester och startalternativ för felsökningsprogram stöds inte. En fullständig värd finns i exemplet BrowserPlayground.
Stöd för STA-trådning
För Windows COM-interopscenarier tillhandahåller MSTest attributen STATestClass och STATestMethod för att köra tester i en entrådig lägenhet. Mer information om STA-trådning, inklusive asynkront fortsättningsstöd med UseSTASynchronizationContext, finns i Threading-attribut.
Testlöpare
MSTest stöder två testkörningsplattformar:
- Microsoft.Testing.Platform (MTP): Den moderna, rekommenderade testplattformen med bättre prestanda och utökningsbarhet.
- VSTest: Den ursprungliga testplattformen och standardtestplattformen för .NET.
För nya projekt rekommenderar vi att du använder MTP med MSTest.Sdk.
MSTest supportpolicy
Sedan v3.0.0 följer MSTest strikt semantisk versionshantering.
MSTest-teamet stöder endast den senaste versionen och uppmuntrar starkt användarna att alltid uppdatera till den senaste versionen för att dra nytta av förbättringar och säkerhetskorrigeringar. Förhandsversioner stöds inte av Microsoft men erbjuds för offentlig testning före den slutliga versionen.
Versionshistorik
MSTest har genomgått en betydande utveckling i större versioner:
- MSTest v1: Det ursprungliga Visual Studio-testramverket
- MSTest v2: Första versionen med öppen källkod med plattformsoberoende stöd
- MSTest v3: Modern omskrivning med förbättrad arkitektur och funktioner
- MSTest v4: Aktuell version med förbättrade funktioner
Note
MSTest 4.4 är under utveckling från och med augusti 2026. Funktioner som har markerats som introducerade i MSTest 4.4 kräver en förhandsversion tills version 4.4.0 släpps.
Mer information om alla versioner finns i MSTest changelog.
Om du uppgraderar från en äldre version kan du läsa migreringsguiderna:
Brytande förändringar
MSTest-teamet granskar noggrant och minimerar störande ändringar. När icke-bakåtkompatibla ändringar krävs använder teamet GitHub-meddelanden och icke-bakåtkompatibla ändringsetiketter i ärenden för att informera communityn tidigt, vilket ger användarna tid att ge feedback och skapa oro innan ändringarna släpps.