Testování aplikací WinUI vytvořených pomocí Windows App SDK

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.

  1. Otevřete Visual Studio a v okně Start vyberte Vytvořit nový projekt.

    Screenshot úvodního okna Visual Studio.

  2. 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ší.

    Screenshot okna Visual Studio 'Vytvořit nový projekt'.

  3. [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.

  4. 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);
      }
   }
}
  1. Pokud jste to ještě neudělali, sestavte řešení. To umožní Visual Studio "zjistit" všechny dostupné testy.

  2. 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).

    Snímek obrazovky nabídky Test ve Visual Studio.

  3. Zobrazení testů V okně Průzkumníka testů rozbalte všechny uzly (v tuto chvíli budou k dispozici pouze ukázkové testy).

    Screenshot okna Průzkumníka testů v Visual Studio zobrazující výchozí ukázkové testy.

  4. 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.

    Screenshot okna Průzkumníka testů v Visual Studio zobrazující místní nabídku testu se zvýrazněnou možností Spustit příkaz.

  5. Kontrola výsledků. Po dokončení testů se výsledky zobrazí v okně Průzkumníka testů .

    Screenshot okna Průzkumníka testů v Visual Studio zobrazující výsledky spuštění testu.

Přidání projektu knihovny tříd pro testování

  1. 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... .

    Screenshot místní nabídky Řešení se zvýrazněnou možností Přidat\/Nový projekt v Visual Studio.

  2. 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.

    Screenshot okna Nový projekt se zvýrazněnou knihovnou tříd WinUI v Visual Studio.

  3. Vyberte Další a zadejte název projektu (v tomto příkladu používáme WinUIClassLibrary1) a stiskněte Vytvořit.

    Screenshot nového projektu 'WinUI Class Library' zvýrazněného v Solution Explorer a souboru Class1.cs otevřeného v editoru kódu.

  4. 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.

    Snímek obrazovky místní nabídky řešení s možností Přidat\/Nová položka zvýrazněnou ve Visual Studiu.

  5. 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.

    Screenshot okna Přidání nové položky se zvýrazněnou možností WinUI\/User Control (WinUI) ve Visual Studio.

  6. Otevřete soubor UserControl1.xaml.cs kódu na pozadí. V tomto příkladu přidáme novou veřejnou metodu, GetSeven která jednoduše vrátí celé číslo.

    namespace WinUIClassLibrary1
    {
      public sealed partial class UserControl1 : UserControl
      {
         public UserControl1()
         {
             this.InitializeComponent();
         }
    
         public int GetSeven()
         {
             return 7;
         }
      }
    }
    
  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.

    Screenshot místní nabídky Závislosti se zvýrazněnou možností Přidat odkaz na projekt ve Visual Studio.

    WinUIClassLibrary1 Vyberte položku ze seznamu Projekty.

    Snímek obrazovky s dialogovým oknem Správce odkazů s vybraným projektem WinUIClassLibrary1

  8. 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ů.

    Screenshot okna Průzkumníka testů ve Visual Studio zobrazující výchozí ukázkové testy s novým jednotkovým testem.

  9. 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.

Screenshot okna Průzkumníka testů v aplikaci Visual Studio zobrazující dokončené testovací spuštění výchozích ukázkových testů a nový jednotkový test.

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:

  1. TargetFramework Aktualizujte soubor .csproj testovacího projektu. Tato hodnota se musí shodovat s TargetFramework v 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>.

  2. Aktualizujte moduly RuntimeIdentifiers v testovacím projektu.

    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &gt;= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>

    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>

  3. 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>

  4. 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