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 Průzkumník řešení 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 Průzkumník řešení 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 Průzkumník řešení 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 Průzkumník řešení 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í).
Automatizace testů uživatelského rozhraní
Pro kompletní testování uživatelského rozhraní aplikace můžete použít automatizované testovací nástroje uživatelského rozhraní, které pracují s aplikací způsobem, jakým by uživatel klikal na tlačítka, zadává text a ověřuje stav vizuálu.
Appium s WinAppDriverem
WinAppDriver byl původní nástroj pro Microsoft pro testování automatizace uživatelského rozhraní Windows, ale už není v aktivním vývoji. Doporučeným následníkem je Appium s modulem plug-in Windows Application Driver (appium-windows-driver). Appium používá stejný protokol WebDriver a podporuje Windows desktopové aplikace prostřednictvím architektury Windows model UI Automation.
Nastavení Appium pro desktopovou aplikaci WinUI 3:
Poznámka:
Tyto kroky vyžadují Node.js (doporučuje se LTS).
- Nainstalujte Appium:
npm install -g appium - Nainstalujte ovladač Windows:
appium driver install windows - Ověřte, že je ovladač nainstalovaný:
appium driver list(mělo by se zobrazitwindowsjako nainstalované). - Spusťte server Appium:
appium - Psaní testů pomocí klientské knihovny WebDriver (k dispozici pro C#, Python, Java a JavaScript).
Tip
Nastavte funkci app na ID modelu uživatele vaší aplikace (AUMID) pro balíčkované aplikace nebo na cestu ke spustitelnému souboru pro nebalíčkované aplikace.
Poznatky o přístupnosti a automatizace uživatelského rozhraní
Přehledy přístupnosti pro Windows vám pomůžou zkontrolovat a ověřit strom model UI Automation vaší aplikace. Prvky vystavené prostřednictvím model UI Automation jsou stejné prvky, se kterými pracují automatizované testovací nástroje. Zajištění, že vaše aplikace má dobře strukturovaný strom automatizace, zlepšuje přístupnost i testovatelnost.
Microsoft Playwright (webové uživatelské rozhraní v WebView2)
Pokud vaše aplikace používá WebView2 pro webový obsah, můžete k otestování webových částí použít Microsoft Playwright. Playwright podporuje automatizované testování prohlížeče a může se připojit k instancím WebView2 pro kompletní ověřování scénářů.
Kvalita kódu a statická analýza
Nástroje statické analýzy zachytají chyby, problémy se zabezpečením a problémy s kvalitou kódu před modulem runtime. Integrujte je do vývojového pracovního postupu a kanálů CI pro zajištění konzistentní kvality.
analyzátory .NET (Roslyn)
.NET projekty zahrnují integrované analyzátory Roslyn, které kontrolují správnost, výkon, spolehlivost a problémy se zabezpečením. Chcete-li v projektu povolit všechna doporučená pravidla:
<PropertyGroup>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
Závažnosti pravidel můžete nakonfigurovat v .editorconfig souboru nebo pomocí <NoWarn> v souboru projektu. Další informace najdete v tématu Přehled analýzy zdrojového kódu .NET.
Statická analýza jazyka C++ (/analýza)
Pro projekty C++ Windows App SDK a Win32 povolte statickou analýzu Microsoft nastavením /analyze vlastností projektu nebo nástroje MSBuild:
<PropertyGroup>
<EnableMicrosoftCodeAnalysis>true</EnableMicrosoftCodeAnalysis>
<CodeAnalysisRuleSet>CppCoreCheckRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
Nástroj C++ Core Guidelines Checker vynucuje moderní osvědčené postupy jazyka C++. Při používání rozhraní API Win32 anotace SAL a příznak /analyze zachycují běžné problémy se životností, vyrovnávací pamětí a souběžností.
Integrace s CI
Přidejte do pracovního postupu CI statickou analýzu, aby se kontroly kvality kódu spouštěly na všech žádostech o přijetí změn. V pracovním postupu GitHub Actions:
- name: Build with analysis
run: dotnet build --configuration Release /p:AnalysisLevel=latest-recommended /p:TreatWarningsAsErrors=true
Pro projekty C++ pomocí nástroje MSBuild:
- name: Build with /analyze
run: msbuild MySolution.sln /p:Configuration=Release /p:EnableMicrosoftCodeAnalysis=true /p:RunCodeAnalysis=true
Telemetrie a hlášení pádů
Shromažďování telemetrických dat a dat o chybách z produkčního prostředí vám pomůže pochopit, jak aplikace funguje v reálném světě, identifikovat regrese a určit prioritu oprav.
Application Insights
Aplikace Azure Insights poskytuje hlášení o pádech, monitorování výkonu a analýzy využití pro desktopové aplikace. Přidání do projektu Windows App SDK:
Poznámka:
Potřebujete předplatné Azure a prostředek Application Insights. Informace o získání připojovacího řetězce najdete v článku Vytvoření prostředku Application Insights.
- Nainstalujte balíček NuGet:
Microsoft.ApplicationInsights - Inicializujte TelemetryClient při spuštění aplikace pomocí připojovacího řetězce
- Sledování výjimek, událostí a zobrazení stránek
Podrobné pokyny k nastavení najdete v tématu Application Insights pro konzolu .NET a desktopové aplikace.
OpenTelemetry
OpenTelemetry je standard nezávislý na dodavateli pro shromažďování logů, metrik a distribuovaných tras. Sada .NET OpenTelemetry SDK se integruje s Azure Monitor a dalšími back-endy.
Nainstalujte požadované balíčky:
dotnet add package OpenTelemetry
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
Pak nakonfigurujte zprostředkovatele traceru:
var activitySource = new System.Diagnostics.ActivitySource("MyApp");
// OpenTelemetry SDKs can listen to ActivitySource instances like this one.
using var activity = activitySource.StartActivity("Startup");
activity?.SetTag("app.version", "1.0.0");
OpenTelemetry je doporučované řešení pro nové projekty, které potřebují podporu více backendů nebo distribuované sledování. Application Insights zůstává dobrou volbou, pokud používáte výhradně Azure Monitor a chcete řídicí panely na klíč.
Hlášení chyb systému Windows (WER)
V případě nativní kolekce chyb Windows Zasílání zpráv o chybách automaticky zaznamená výpisy stavu systému, když se aplikace neočekávaně ukončí. Zabalené aplikace (MSIX) získávají data o chybách, která se zobrazí prostřednictvím sestav kvality v Partnerském centru. U organizačních aplikací (LOB) můžete nakonfigurovat místní shromažďování výpisů paměti WER tak, aby se minidumps uložily pro místní analýzu.
Dodatečné zdroje
Windows developer