Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto tématu uvádíme několik doporučení, jak testovat a ověřovat funkce v aplikacích vytvořených pomocí funkcí uživatelského rozhraní (UI) Windows App SDK pomocí funkcí WinUI 3. Testování je základní součástí procesu vývoje aplikací – pomáhá zachytit chyby v rané fázi, udržovat kvalitu kódu a zajistit spolehlivé uživatelské prostředí při vývoji vaší aplikace. Začleněním testů jednotek do pracovního postupu můžete s jistotou refaktorovat kód, přidat nové funkce a dodávat aktualizace s vědomím, že stávající funkce budou fungovat podle očekávání.
Kurz: Vytvoření projektu testování jednotek WinUI 3
Většina typů objektů v oboru názvů Microsoft.UI.Xaml musí být použita z vlákna uživatelského rozhraní v procesu aplikace XAML. (Podrobnosti o testování aplikací vytvořených pomocí Windows App SDK, které nepoužívají WinUI 3, najdete v následující části Testování funkcí jiných než WinUI.)
Poznámka:
Doporučujeme refaktorovat jakýkoli kód, který se má otestovat tak, že ho přetáhnete z hlavního projektu aplikace a umístíte ho do projektu knihovny. Projekt aplikace i projekt jednotkových testů pak mohou odkazovat na tento projekt knihovny. Tato část popisuje, jak vytvořit testy jednotek pro aplikace WinUI 3 v Visual Studio pomocí předdefinovaných šablon projektů testů jednotek.
Poznámka:
Aplikace pro testování jednotek popsaná zde je napsaná v kontextu aplikace WinUI 3. To je vyžadováno pro všechny testy, které provádějí kód vyžadující modul runtime XAML. Tento projekt vytvoří vlákno uživatelského rozhraní XAML a spustí testy.
V tomto návodu se naučíte, jak:
- Vytvořte projekt WinUI Unit Test App v Visual Studio.
- Použijte průzkumníka Visual Studio Test Explorer.
- Přidejte projekt knihovny tříd WinUI pro účely testování.
- Spusťte testy pomocí průzkumníka testů Visual Studio.
Předpoklady
Pro vývoj pro WinUI musíte mít nainstalované Visual Studio a nainstalovat ho. Viz Rychlý start: Nastavení prostředí a vytvoření projektu WinUI 3.
Vytvoření projektu aplikace Pro testování jednotek WinUI
Začněte vytvořením projektu testování jednotek. Typ projektu obsahuje všechny soubory šablony, které potřebujete.
Otevřete Visual Studio a v okně Start vyberte Vytvořit nový projekt.
V okně Vytvoření nového projektu vyfiltrujte projekty podle kritérií C#, Windows a WinUI, vyberte šablonu WinUI Unit Test App a poté klikněte na Další.
[Volitelné] V okně Konfigurovat nový projekt změňtenázev projektu, název řešení (zrušte zaškrtnutí políčka Umístit řešení a projekt do stejného adresáře) a umístění projektu.
Vyberte Vytvořit.
Spouštění testů pomocí Průzkumníka testů
Při vytváření testovacího projektu se testy zobrazí v Průzkumníku testů, který slouží ke spuštění testů jednotek. Testy můžete také seskupit do kategorií, filtrovat seznam testů, vytvářet, ukládat a spouštět testovací seznamy, ladit jednotkové testy a (ve Visual Studio Enterprise) analyzovat pokrytí kódu.
Soubor UnitTests.cs obsahuje zdrojový kód pro testy jednotek používané Průzkumníkem testů. Ve výchozím nastavení se základní ukázkové testy zobrazené zde vytvoří automaticky:
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);
}
}
}
Pokud jste to ještě neudělali, sestavte řešení. To umožní Visual Studio "zjistit" všechny dostupné testy.
Otevřete Průzkumníka testů. Pokud není vidět, otevřete nabídku Test a pak zvolte Průzkumníka testů (nebo stiskněte Ctrl +E, T).
Zobrazení testů V okně Průzkumníka testů rozbalte všechny uzly (v tuto chvíli budou k dispozici pouze ukázkové testy).
Spusťte testy.
- Klikněte pravým tlačítkem na jednotlivé testovací uzly a vyberte Spustit.
- Vyberte test a buď stiskněte tlačítko Přehrát , nebo stiskněte Ctrl+R, T.
- Stiskněte tlačítko Spustit všechny testy v zobrazení nebo stiskněte Kombinaci kláves Ctrl+R, V.
Kontrola výsledků. Po dokončení testů se výsledky zobrazí v okně Průzkumníka testů .
Přidání projektu knihovny tříd pro testování
Přidejte do řešení testování jednotek nový projekt. V Solution Explorer klikněte pravým tlačítkem na řešení a vyberte Přidat -> Nový projekt... .
V tomto příkladu přidejte projekt knihovny tříd WinUI 3. V okně Nový projekt vyfiltrujte C#/Windows/WinUI a vyberte Knihovna třídWinUI.
Vyberte Další a zadejte název projektu (v tomto příkladu používáme
WinUIClassLibrary1) a stiskněte Vytvořit.
Přidejte do projektu nový
UserControl. V Solution Explorer klikněte pravým tlačítkem na projekt knihovny tříd WinUI 3, který jste právě přidali, a v místní nabídce vyberte Přidat -> Nová položka.
V okně Přidat novou položku vyberte uzel WinUI v seznamu Nainstalované položky a pak ve výsledcích zvolte Uživatelský ovládací prvek . Pojmenujte ovládací prvek
UserControl1.
Otevřete soubor UserControl1.xaml.cs kódu na pozadí. V tomto příkladu přidáme novou veřejnou metodu,
GetSevenkterá jednoduše vrátí celé číslo.namespace WinUIClassLibrary1 { public sealed partial class UserControl1 : UserControl { public UserControl1() { this.InitializeComponent(); } public int GetSeven() { return 7; } } }Nastavte projekt knihovny tříd WinUI 3 jako závislost projektu testu jednotek, abyste umožnili použití typů z projektu knihovny tříd WinUI 3. V Solution Explorer v projektu knihovny tříd klikněte pravým tlačítkem na Dependencies a vyberte Přidat odkaz na projekt.
WinUIClassLibrary1Vyberte položku ze seznamu Projekty.
Vytvořte novou testovací metodu v UnitTests.cs. Vzhledem k tomu, že tento testovací případ vyžaduje ke spuštění vlákno uživatelského rozhraní XAML, označte ho atributem
[UITestMethod]místo standardního[TestMethod]atributu.[UITestMethod] public void TestUserControl1() { WinUIClassLibrary1.UserControl1 userControl1 = new WinUIClassLibrary1.UserControl1(); Assert.AreEqual(7, userControl1.GetSeven()); }Tato nová testovací metoda se teď zobrazí v Průzkumníku testů jako jeden z vašich jednotkových testů.
Spusťte testy.
- Klikněte pravým tlačítkem myši na nový testovací uzel a vyberte Spustit.
- Vyberte nový test a buď stiskněte tlačítko Přehrát , nebo stiskněte Ctrl+R, T.
- Stiskněte tlačítko Spustit všechny testy v zobrazení nebo stiskněte Kombinaci kláves Ctrl+R, V.
Testování funkcí jiného systému než WinUI
V mnoha případech aplikace obsahuje funkce, které nezávisí na typech Microsoft.UI.Xaml, ale stále potřebuje testování. K dispozici jsou různé nástroje pro testování kódu .NET, včetně MSTest, NUnit a xUnit. Další podrobnosti o testování aplikací .NET najdete v tématu Testing v .NET.
V aplikaci Visual Studio můžete vytvořit nový projekt pro některý z těchto testovacích nástrojů pravým kliknutím na vaše řešení v Solution Explorer a vybráním možnosti Přidat -> Nový projekt z místní nabídky. Poté zvolíte C# z Všechny jazyky, následně Windows z Všechny platformy, Test z Všechny typy projektů a nakonec vyberete příslušný testovací nástroj ze seznamu (MSTest Test Project, NUnit Test Project nebo xUnit Test Project).
Při vytváření nového projektu MSTest, NUnit nebo xUnit, který odkazuje na projekt WinUI 3, musíte:
TargetFrameworkAktualizujte soubor .csproj testovacího projektu. Tato hodnota se musí shodovat sTargetFrameworkv projektu WinUI 3. Ve výchozím nastavení projekty MSTest, NUnit a xUnit cílí na celou řadu platforem podporovaných .NET, ale projekt WinUI 3 podporuje pouze Windows a má konkrétnější TargetFramework.Pokud například cílíte na .NET 8, aktualizujte targetFramework projektu testu jednotek z
<TargetFramework>net8.0</TargetFramework>na<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>.Aktualizujte moduly RuntimeIdentifiers v testovacím projektu.
<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>Do .csproj souboru vašeho testovacího projektu přidejte následující vlastnost do
PropertyGroup, aby bylo zajištěno, že test načte runtime Windows App SDK:<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>Ujistěte se, že je na počítači, na kterém běží test, nainstalovaný modul runtime Windows App SDK. Další informace o nasazení Windows App SDK najdete v průvodci nasazením Windows App SDK pro aplikace závislé na rámci zabalené s externím umístěním (nebo bez balení).
Dodatečné zdroje
Windows developer