Översikt av MSTest

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, CombinatorialData, 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 10+ med UWP-verktyg UI-tråd UITestMethod MSTest 4.5 och MTP 2.5 har stöd för klassiska och moderna UWP-appar via sidecar för appmodellen i MSTest.Sdk
WinUI 3 .NET 8+ UI-tråd UITestMethod MTP stöder paketerade, opaketerade och AppContainer-värdar; se Testa UWP- och WinUI 3-appar med MSTest och MTP
Windows automatisering av skrivbordsgränssnittet .NET 8+ målplattform för Windows STA STATestClass FÖRHANDSVERSIONEN AV MSTest 4.5 kan starta uppackade Win32-, Windows Forms- och WPF-appar och exponera ett fönster genom Windows UI Automation
Native 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 MTP-körningsstöd startar med MSTest 4.4
WASI WebAssembly .NET 10+ anpassad värd Enkeltrådad Limited MTP-körningsstöd 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);
    }
}

Från och med MSTest 4.5 och MTP 2.5 använder du MSTest.Sdk för att köra klassiska UWP- och modern .NET UWP-tester via MTP. En sidecar med fullständig behörighet registrerar och aktiverar paketet, auktoriserar appens specifika paket-SID för MTP-kommunikation och kopierar resultatfiler från paketets lagring.

Modern UWP kräver .NET 10 och UseUwpVisual Studio UWP-byggverktygskedjan. Klassisk UWP behåller sin befintliga uap10.0 projektform. Fullständiga konfigurationer finns i det moderna UWP-exemplet och det klassiska UWP-exemplet.

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

MTP stöder paketerade WinUI 3-testprogram med fullständig behörighet, opaketerade WinUI 3-testprogram och AppContainer-konfigurerade WinUI 3-testprogram. MSTest.Sdk startar opaketerade appar direkt och använder sin sidokomponent för appmodellen för att registrera och aktivera paketerade appar.

Stöd för AppContainer kräver MSTest 4.5 och MTP 2.5 eller senare. VSTest stöder inte uppackad WinUI 3. Information om konfiguration finns i Testa UWP- och WinUI 3-appar med MSTest och MTP.

Windows automatisering av skrivbordsgränssnittet

Paketet MSTest.Windows.UIAutomation integrerar MSTest-livscykelhantering med Windows UI Automation för uppackade Win32-, Windows Forms- och WPF-program. Information om konfiguration, begränsningar och ApplicationTest basklasser finns WindowTest i Testa Windows skrivbordsappar med MSTest UI Automation.

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

MSTest 4.4 stöder anpassade värdar för .NET 10-webbläsare eller WASI WebAssembly. Om du vill köra tester från en refererad MSTest-sammansättning anropar du AddMSTest. I värdprojektet anger du EnableMSTestRunner till true och GenerateTestingPlatformEntryPoint till false. Håll MSTest- och MTP-paketversionerna justerade.

I en enkeltrådad WebAssembly-körning kan MSTest inte tvinga fram ett avbrott av ett test som har överskridit tidsgränsen. Felsökningsvänte stöds inte i webbläsare eller WASI, och webbläsaren stöder inte startalternativ för felsökningsprogram.

MTP kan strömma TRX-data och rapportera test- och sessionsfilartefakter via värdens virtuella WebAssembly-filsystem och artefaktkanal. Publicering i Azure DevOps fungerar bara när värden tillhandahåller HTTP-åtkomst som stöds och den pipelineautentisering som krävs. Dessa funktioner beviljar inte obegränsad värdfilsystem eller nätverksåtkomst.

För en fullständig webbläsarvärd, se BrowserPlayground-exemplet.

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.5 är under utveckling från oktober 2026. Funktioner som har markerats som introducerade i MSTest 4.5 kräver en förhandsversion tills version 4.5.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.

Nästa steg