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.
I det här avsnittet ger vi några rekommendationer för hur du testar och validerar funktioner i appar som skapats med Windows App SDK med hjälp av WinUI 3 användargränssnittsfunktioner(UI). Testning är en viktig del av apputvecklingsprocessen – det hjälper dig att fånga buggar tidigt, upprätthålla kodkvaliteten och säkerställa en tillförlitlig användarupplevelse när din app utvecklas. Genom att införliva enhetstester i arbetsflödet kan du på ett säkert sätt omstrukturera kod, lägga till nya funktioner och skicka uppdateringar med vetskapen om att befintliga funktioner fortsätter att fungera som förväntat.
Självstudie: Skapa ett WinUI 3-enhetstestprojekt.
De flesta objekttyper under namnrymderna Microsoft.UI.Xaml måste användas från en UI-tråd i en XAML-programprocess. (Mer information om hur du testar appar som skapats med Windows App SDK som inte använder WinUI 3 finns i följande avsnitt, Testing non-WinUI functionality.)
Anmärkning
Vi rekommenderar att du omstrukturerar all kod som ska testas genom att dra ut den från huvudappprojektet och placera den i ett biblioteksprojekt. Både ditt appprojekt och ditt enhetstestprojekt kan sedan referera till det biblioteksprojektet. I det här avsnittet beskrivs hur du skapar enhetstester för WinUI 3-appar i Visual Studio med hjälp av de inbyggda projektmallarna för enhetstest.
Anmärkning
Enhetstestappen som beskrivs här är skriven i kontexten för ett WinUI 3-program. Detta krävs för alla tester som kör kod som kräver XAML-körningen. Det här projektet skapar en XAML UI-tråd och kör testerna.
I den här tutorialen lär du dig följande:
- Skapa ett WinUI Unit Test App-projekt i Visual Studio.
- Använd Visual Studio Test Explorer.
- Lägg till ett WinUI-klassbiblioteksprojekt för testning.
- Kör tester med Visual Studio Test Explorer.
Förutsättningar
Du måste ha Visual Studio installerat och konfigurerat för WinUI-utveckling. Se Snabbstart: Konfigurera din miljö och skapa ett WinUI 3-projekt.
Skapa ett WinUI Unit Test App-projekt
Börja genom att skapa ett enhetstestprojekt. Projekttypen levereras med alla mallfiler som du behöver.
Öppna Visual Studio och välj Skapa ett nytt projekt i startfönstret.
I fönstret Skapa ett nytt projekt filtrerar du projekt till C#, Windows och WinUI väljer du mallen WinUI Unit Test App och väljer sedan Nästa
[Valfritt] I fönstret Konfigurera det nya projektet ändrar du Projektnamn, Lösningsnamn (avmarkera Placera lösning och projekt i samma katalog) och platsen för projektet.
Välj Skapa.
Köra tester med Test Explorer
När du skapar testprojektet visas dina tester i Test Explorer, som används för att köra enhetstesterna. Du kan också gruppera tester i kategorier, filtrera testlistan, skapa, spara och köra spellistor med tester, felsöka enhetstester och (i Visual Studio Enterprise) analysera kodtäckning.
Filen UnitTests.cs innehåller källkoden för de enhetstester som används av Test Explorer. Som standard skapas de grundläggande exempeltesterna som visas här automatiskt:
namespace WinUITest1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual(0, 0);
}
// Use the UITestMethod attribute for tests that need to run on the UI thread.
[UITestMethod]
public void TestMethod2()
{
var grid = new Grid();
Assert.AreEqual(0, grid.MinWidth);
}
}
}
Om du inte redan har gjort det skapar du din lösning. På så sätt kan Visual Studio "identifiera" alla tillgängliga tester.
Öppna Testutforskaren. Om den inte visas öppnar du testmenyn och väljer sedan Testutforskaren (eller trycker på Ctrl + E, T).
Visa tester I fönstret Testutforskaren expanderar du alla noder (endast exempeltesterna kommer att finnas i det här läget).
Kör tester.
- Högerklicka på enskilda testnoder och välj Kör.
- Välj ett test och tryck antingen på knappen Spela upp eller tryck på Ctrl + R, T.
- Tryck på knappen Kör alla tester i vyn eller tryck på Ctrl + R, V.
Granska resultatet: När testerna har slutförts visas resultaten i testutforskarens fönster.
Lägga till ett klassbiblioteksprojekt för testning
Lägg till ett nytt projekt i enhetstestlösningen. Högerklicka på lösningen i Solution Explorer och välj Lägg till -> Nytt projekt... .
I det här exemplet lägger du till ett WinUI 3-klassbiblioteksprojekt. I fönstret Nytt projekt filtrerar du på C#/Windows/WinUI och väljer WinUI-klassbibliotek.
Välj Nästa och ange ett namn för projektet (i det här exemplet använder
WinUIClassLibrary1vi ) och tryck på Skapa.
Lägg till en ny
UserControli projektet. I Solution Explorer högerklickar du på det WinUI 3-klassbiblioteksprojekt som du just lade till och väljer Lägg till -> Nytt objekt från snabbmenyn.
I fönstret Lägg till nytt objekt väljer du noden WinUI i listan Installerade objekt och väljer sedan Användarkontroll i resultatet. Ge kontrollen namnet
UserControl1.
Öppna UserControl1.xaml.cs code-behind-filen. I det här exemplet lägger vi till en ny offentlig metod med namnet
GetSevensom helt enkelt returnerar ett heltal.namespace WinUICLassLibrary1 { public sealed partial class UserControll : UserControl { public UserControl1() { this.InitializeComponent(); } public int GetSeven() { return 7; } } }Ange projektet WinUI 3-klassbibliotek som ett beroende av enhetstestprojektet för att aktivera användning av typer från winui 3-klassbiblioteksprojektet. I Solution Explorer, under biblioteksklassprojektet, högerklickar du på Dependencies och väljer Lägg till projektreferens.
Välj objektet i
WinUIClassLibrary1listan Projekt .
Skapa en ny testmetod i UnitTests.cs. Eftersom det här testfallet kräver att en XAML-användargränssnittstråd körs, markerar du det med attributet
[UITestMethod]i stället för standardattributet[TestMethod].[UITestMethod] public void TestUserControl1() { WinUIClassLibrary1.UserControl1 userControl1 = new WinUIClassLibrary1.UserControl1(); Assert.AreEqual(7, userControl1.GetSeven()); }Den här nya testmetoden visas nu i Test Explorer som ett av dina enhetstester.
Kör tester.
- Högerklicka på den nya testnoden och välj Kör.
- Välj det nya testet och tryck antingen på knappen Spela upp eller tryck på Ctrl + R, T.
- Tryck på knappen Kör alla tester i vyn eller tryck på Ctrl + R, V.
Testa icke-WinUI-funktioner
I många fall innehåller en app funktioner som inte är beroende av Microsoft.UI.Xaml-typer men som fortfarande behöver testas. Det finns olika verktyg för att testa .NET kod, inklusive MSTest, NUnit och xUnit. Mer information om hur du testar .NET appar finns i Testing i .NET.
I Visual Studio kan du skapa ett nytt projekt för något av dessa testverktyg genom att högerklicka på din lösning i Solution Explorer, välja Lägg till -> Nytt projekt från snabbmenyn och välja C# från Alla språk väljare/Windows från väljaren Alla språk väljare/Test från Alla projekttyper väljare, och välj sedan lämpligt testverktyg från listan (MSTest Test Project, NUnit Test Project eller xUnit Test Project).
När du skapar ett nytt MSTest-, NUnit- eller xUnit-projekt som refererar till ett WinUI 3-projekt måste du:
Uppdatera
TargetFrameworki .csproj-filen i testprojektet. Det här värdet måste matchaTargetFrameworki WinUI 3-projektet. Som standard är MSTest-, NUnit- och xUnit-projekt inriktade på alla plattformar som stöds av .NET, men ett WinUI 3-projekt stöder bara Windows och har ett mer specifikt TargetFramework.Om du till exempel riktar in dig på .NET 8 uppdaterar du TargetFramework för enhetstestprojektet från
<TargetFramework>net8.0</TargetFramework>till<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>.Uppdatera RuntimeIdentifiers i testprojektet.
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) >= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers><RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) < 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>Lägg till följande egenskap i filen
PropertyGroupi .csproj i testprojektet för att säkerställa att testet läser in Windows App SDK-körningen:<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>Kontrollera att Windows App SDK-körningen är installerad på den dator som kör testet. Mer information om distribueringsprocessen för Windows App SDK finns i Windows App SDK distribueringsguide för ramverksberoende appar som paketeras med extern plats (eller packas upp).
Ytterligare resurser
Windows developer