Návod: Vytváření, upravování a údržba programového testu UI
V tomto návodu vytvoříte jednoduchou aplikaci Windows Presentation Foundation (WPF) pro demonstraci vytvoření, úpravy a správy programového testu uživatelského rozhraní.Návod poskytuje řešení pro opravu testů, které byly poškozeny různými chybami časování a refaktoringem ovládacích prvků.
Požadavky
Přitom budete potřebovat:
- Visual Studio Ultimate nebo Visual Studio Premium.
Vytvoření jednoduché aplikace WPF
Na soubor nabídce přejděte na novýa potom vyberte projektu.
Zobrazí se dialogové okno Nový projekt.
V nainstalované podokně rozbalte **Visual C#**a potom vyberte Windows Desktop.
Nad prostředním podoknem ověřte, zda je rozevírací seznam cílových verzí rozhraní .NET Framework nastaven na hodnotu .NET Framework 4.5.
V prostředním podokně vyberte šablonu Aplikace WPF.
Do textového pole Název zadejte SimpleWPFApp.
Zvolte složku, do které bude projekt uložen.Do textového pole Umístění zadejte název složky.
Klikněte na tlačítko OK.
WPF Designer pro sadu Visual Studio otevře a zobrazí hlavní okno MainWindow projektu.
Pokud není panel nástrojů otevřen, otevřete jej.Zvolte zobrazení nabídce a poté zvolte možnost nástrojů.
V části Všechny ovládací prvky WPF přetáhněte ovládací prvky Tlačítko, Zaškrtávací políčko a Indikátor průběhu do hlavního okna MainWindow v návrhové ploše.
Vyberte ovládací prvek Tlačítko.V okně Vlastnosti změnit hodnotu název vlastnost z < bez názvu > button1.Poté změňte hodnotu obsahu vlastnost z tlačítko Start.
Vyberte ovládací prvek Indikátor průběhu.V okně Vlastnosti změňte hodnotu na hodnotu pro název vlastnost z < bez názvu > progressBar1.Poté změňte hodnotu maximální vlastnost z 100 k 10000.
Vyberte ovládací prvek Zaškrtávací políčko.V okně Vlastnosti změnit hodnotu název vlastnosti z < bez názvu > checkBox1 a zrušte zaškrtnutí políčka IsEnabled vlastnost.
Poklepejte na tlačítko Přidat obslužnou rutinu události click.
V editoru kódu se zobrazí MainWindow.xmal.cs s kurzorem v nové metodě button1_Click.
V horní části třídy hlavního okna MainWindow přidejte delegáta.Delegát bude použit pro indikátor průběhu.Chcete-li přidat delegáta, přidejte následující kód:
public partial class MainWindow : Window { private delegate void ProgressBarDelegate(System.Windows.DependencyProperty dp, Object value); public MainWindow() { InitializeComponent(); }
V metodě button1_Click přidejte následující kód:
private void button1_Click(object sender, RoutedEventArgs e) { double progress = 0; ProgressBarDelegate updatePbDelegate = new ProgressBarDelegate(progressBar1.SetValue); do { progress ++; Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, progress }); progressBar1.Value = progress; } while (progressBar1.Value != progressBar1.Maximum); checkBox1.IsEnabled = true; }
Uložte soubor.
Ověření správného běhu aplikace WPF
Na ladění klepněte na příkaz spustit ladění nebo stisknutím klávesy F5.
Všimněte si, že je ovládací prvek zaškrtávací políčko zakázáno.Zvolte možnost Zahájit.
Během několika sekund by měl indikátor průběhu ukazovat 100 %.
Nyní můžete vybrat ovládací prvek zaškrtávací políčko.
Ukončete aplikaci SimpleWPFApp.
Vytvoření a spuštění programového testu uživatelského rozhraní pro aplikaci SimpleWPFApp
Vyhledejte SimpleWPFApp aplikace, který jste vytvořili.Ve výchozím nastavení aplikace bude umístěna v 2013\Projects\SimpleWPFApp\SimpleWPFApp\bin\Debug\SimpleWPFApp.exe Studio \Documents\Visual C:\Users\ < uživatelské_jméno >
Vytvořte pro aplikaci SimpleWPFApp zástupce na ploše.Klikněte pravým tlačítkem na soubor SimpleWPFApp.exe a zvolte možnost Kopírovat.Klikněte pravým tlačítkem na plochu a zvolte možnost Vložit zástupce.
Tip
Zástupce aplikace usnadňuje přidávání nebo úpravu programových testů uživatelského rozhraní pro vaši aplikaci, protože umožňuje rychlé spuštění aplikace.
V Průzkumníku řešení klikněte pravým tlačítkem na řešení, vyberte možnost Přidat a poté zvolte možnost Nový projekt.
Zobrazí se dialogové okno Přidat nový projekt.
V podokně Nainstalováno rozbalte položku Visual C# a zvolte možnost Test.
V prostředním podokně vyberte šablonu Projekt programového testu UI.
Klikněte na tlačítko OK.
V Průzkumníku řešení nová programové uživatelského rozhraní testovací projekt s názvem CodedUITestProject1 je přidán do vašeho řešení.
Zobrazí se dialogové okno Vytvořit kód pro programový test uživatelského rozhraní.
Vyberte možnost Zaznamenat akce, upravit mapování uživatelského rozhraní nebo přidat kontrolní výraz a klikněte na tlačítko OK.
Zobrazí se Tvůrce testování uživatelského rozhraní Coded UIMap – a minimalizaci okna sady Visual Studio.
Další informace o možnostech v dialogovém okně naleznete v tématu Vytváření programových testů uživatelského rozhraní.
V nástroji UIMap – Tvůrce programového testu UI zvolte možnost Spustit záznam.
Je možné pozastavit nahrávání v případě potřeby, například pokud máte řešit příchozí pošty.
Upozornění Všechny akce prováděné na ploše, bude zaznamenán.Pozastavte nahrávání při provedení akce, které může vést k citlivá data bude zahrnut v záznamu.
Spusťte SimpleWPFApp pomocí zástupce na ploše.
Jako dříve Všimněte si, že je ovládací prvek zaškrtávací políčko zakázáno.
V aplikaci SimpleWPFApp zvolte možnost Zahájit.
Během několika sekund by měl indikátor průběhu ukazovat 100 %.
Zkontrolujte ovládací prvek zaškrtávací políčko, která je nyní povolena.
Ukončete aplikaci SimpleWPFApp.
V nástroji UIMap – Tvůrce programového testu UI zvolte možnost Vytvořit kód.
Do pole Název metody zadejte SimpleAppTest a zvolte možnost Přidat a vytvořit.Během několika sekund se programový test uživatelského rozhraní zobrazí a přidá k řešení.
Ukončete nástroj UIMap – Tvůrce programového testu UI.
V Editoru kódu se zobrazí soubor CodedUITest1.cs.
Uložte projekt.
Spuštění programového testu uživatelského rozhraní
Z TEST nabídce zvolte Windows a poté zvolte možnost Průzkumníka testů.
Z sestavení nabídce zvolte sestavit řešení.
V souboru CodedUITest1.cs, vyhledejte CodedUITestMethod metoda klikněte pravým tlačítkem a vyberte spouštět testy, nebo spustit test z Průzkumníka testů.
V průběhu programového testu uživatelského rozhraní je zobrazena aplikace SimpleWPFApp.Provádí kroky, které jste učinili v předchozí proceduře.Však Pokud test se pokouší zaškrtněte políčko pro ovládací prvek zaškrtávací políčko, okno Test výsledků zobrazuje, že test selhal.To je vzhledem k tomu, že test se pokouší toto políčko zaškrtněte, ale není upozornit na to, že je ovládací prvek zaškrtávací políčko zakázáno, dokud indikátor průběhu je dokončeno 100 %.Tento problém a podobné problémy můžete vyřešit použitím různých metod UITestControl.WaitForControlXXX(), které jsou k dispozici pro programové testování uživatelského rozhraní.Další postup vám ukáže způsob použití metody WaitForControlEnabled() k odstranění problému, který způsobil selhání testu.Další informace naleznete v tématu Zajištění čekání programových testů UI na konkrétní události při přehrávání.
Úprava a opětovné spuštění programového testu uživatelského rozhraní
V okně Průzkumníka testů vyberte neúspěšnou test a v StackTrace oddílu, zvolte první odkaz na UIMap.SimpleAppTest().
Otevře se soubor UIMap.Designer.cs se zvýrazněným chybovým místem v kódu:
// Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
Chcete-li tento problém vyřešit, můžete pomocí metody WaitForControlEnabled() nastavit, aby programový test uživatelského rozhraní čekal před pokračováním na tento řádek, až bude ovládací prvek Zaškrtávací políčko povolen.
Upozornění Neupravujte soubor UIMap.Designer.cs.Jakékoli změny kódu v souboru UIMapDesigner.cs budou při každém vytvoření kódu pomocí nástroje UIMap – Tvůrce programového testu UI přepsány.Pokud je třeba změnit zaznamenanou metodu, musíte ji zkopírovat do souboru UIMap.cs a přejmenovat ji.Soubor UIMap.cs lze použít k přepsání metod a vlastností v souboru UIMapDesigner.cs.Je třeba odebrat odkaz na původní metodu v kódovaném souboru UITest.cs a nahradit ji názvem přejmenované metody.
V Průzkumníku řešení vyhledejte soubor UIMap.uitest v projektu programového testu UI.
Otevřete místní nabídku pro soubor UIMap.uitest a zvolte možnost Otevřít.
Programový test uživatelského rozhraní se zobrazí v Editoru programového testu uživatelského rozhraní.Nyní můžete zobrazit a upravit programový test uživatelského rozhraní.
V akce uživatelského rozhraní podokně, vyberte možnost znovu zkompiluje metodu test (SimpleAppTest), které chcete přesunout do souboru UIMap.cs nebo UIMap.vb k zajištění funkce vlastního kódu, který nebude přepsána při testování kódu.
Zvolte tlačítko Přesunout kód na panelu nástrojů Editoru programového testu uživatelského rozhraní.
Zobrazí se dialogové okno aplikace Microsoft Visual Studio.Upozorňuje vás, že metoda bude přesunuta ze souboru UIMap.uitest do souboru UIMap.cs a že již nebude možné upravit metodu pomocí funkce Editor programového testu uživatelského rozhraní.Klikněte na tlačítko Ano.
Testovací metoda je odebrána ze souboru UIMap.uitest a v podokně Akce uživatelského rozhraní se již nezobrazí.Chcete-li upravit přesunutý soubor testu, otevřete soubor UIMap.cs z Průzkumníku řešení.
Na panelu nástrojů aplikace Visual Studio zvolte možnost Uložit.
Aktualizace testovací metody jsou uloženy do souboru UIMap.Designer.
Upozornění Po přesunutí metody ji nemůžete nadále upravovat pomocí Editoru programového testu uživatelského rozhraní.Musíte přidat vlastní kód a spravovat jej pomocí Editoru kódu.
Přejmenujte metodu z SimpleAppTest() na ModifiedSimpleAppTest()
Přidejte do souboru následující příkaz Using:
using Microsoft.VisualStudio.TestTools.UITesting.WpfControls;
Přidejte následující metodu WaitForControlEnabled() před problematický řádek kódu, který byl dříve identifikován:
uICheckBoxCheckBox.WaitForControlEnabled(); // Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
Vyhledejte v souboru CodedUITest1.cs metodu CodedUITestMethod a buď přidejte komentář, nebo přejmenujte odkaz na původní metodu SimpleAppTest() a poté ji nahraďte novou metodou ModifiedSimpleAppTest():
[TestMethod] public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. // For more information on generated code, see https://go.microsoft.com/fwlink/?LinkId=179463 //this.UIMap.SimpleAppTest(); this.UIMap.ModifiedSimpleAppTest(); }
Na sestavení nabídce zvolte sestavit řešení.
Klikněte pravým tlačítkem na metodu CodedUITestMethod a vyberte možnost Spustit testy.
Tento čas programové testy uživatelského rozhraní úspěšně dokončil všechny kroky v testu a předaná se zobrazí v okně Průzkumníka testů.
Refaktorování ovládacího prvku v aplikaci SimpleWPFApp
V souboru MainWindow.xaml v položce Návrhář vyberte ovládací prvek Tlačítko.
V horní části okna vlastnosti změnit název hodnotu vlastnosti z button1 buttonA.
Na sestavení nabídce zvolte sestavit řešení.
V Průzkumníku Test spustit CodedUITestMethod1.
Test se nezdaří, protože programový test uživatelského rozhraní nemůže najít ovládací prvek Tlačítko, který byl původně namapován ve třídě UIMap jako Tlačítko1.Refaktoring může tímto způsobem ovlivnit programové testy uživatelského rozhraní.
V okně Průzkumníka testů v StackTrace oddílu, zvolte první odkaz vedle (UIMpa.ModifiedSimpleAppTest).
Otevře se soubor UIMap.cs.Místo chyby bude v kódu zvýrazněno:
// Click 'Start' button Mouse.Click(uIStartButton, new Point(27, 10));
Všimněte si, že řádek kódu uvedený dříve v tomto postupu používá vlastnost UiStartButton, což je název třídy UIMap předtím, než byla refaktorována.
Chcete-li tento problém vyřešit, můžete pomocí položky Tvůrce programového testu UI přidat refaktorovaný ovládací prvek do třídy UIMap.Provedením následujícího postupu můžete aktualizovat kód testu tak, aby použil tento kód.
Mapování refaktorovaného ovládacího prvku a úprava a opětovné spuštění programového testu uživatelského rozhraní
V souboru CodedUITest1.cs klikněte v metodě CodedUITestMethod1() pravým tlačítkem a vyberte položku Vytvořit programový test uživatelského rozhraní. Poté zvolte možnost Použít Tvůrce programového testu UI.
Zobrazí se nástroj UIMap – Tvůrce programového testu UI.
Pomocí zástupce na ploše jste dříve vytvořili, spusťte aplikaci SimpleWPFApp, který jste vytvořili.
V nástroji UIMap – Tvůrce programového testu UI přetáhněte ikonu křížku na tlačítko Zahájit v aplikaci SimpleWPFApp.
Tlačítko Zahájit je ohraničeno modrým polem a nástroj Tvůrce programového testu UI bude potřebovat několik sekund na zpracování dat pro vybraný ovládací prvek a zobrazení vlastností ovládacích prvků.Všimněte si, že vlastnost AutomationUId má název TlačítkoA.
Ve vlastnostech ovládacího prvku vyberte šipku v levém horním rohu a rozbalte mapování ovládacího prvku uživatelského rozhraní.Všimněte si, že je vybrána vlastnost UIStartButton1.
V panelu nástrojů zvolte možnost Přidat ovládací prvek do mapování ovládacích prvků UI.
Stav v dolní části okna ověří akci zobrazením zprávy Vybraný ovládací prvek byl přidán do mapování ovládacích prvků uživatelského rozhraní.
V nástroji UIMap – Tvůrce programového testu UI zvolte možnost Vytvořit kód.
Zobrazí se zpráva Tvůrce programového testu UI – Vytvořit kód s poznámkou uvádějící, že není vyžadována žádná nová metoda a že kód bude vytvořen pouze pro změny provedené v mapování ovládacího prvku uživatelského rozhraní.
Zvolte možnost Vytvořit.
Ukončete aplikaci SimpleWPFApp.exe.
Ukončete nástroj UIMap – Tvůrce programového testu UI.
Nástroj UIMap – Tvůrce programového testu UI bude potřebovat několik sekund na zpracování změn provedených v mapování ovládacího prvku uživatelského rozhraní.
V Průzkumníku řešení otevřete soubor UIMap.Designer.cs.
V souboru UIMap.Designer.cs vyhledejte vlastnost UIStartButton1.Všimněte si, že je vlastnost SearchProperties nastavena na "buttonA":
public WpfButton UIStartButton1 { get { if ((this.mUIStartButton1 == null)) { this.mUIStartButton1 = new WpfButton(this); #region Search Criteria this.mUIStartButton1.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA"; this.mUIStartButton1.WindowTitles.Add("MainWindow"); #endregion } return this.mUIStartButton1; } }
Nyní můžete upravit programový test uživatelského rozhraní tak, aby používal nově namapovaný ovládací prvek.Jak bylo uvedeno v předchozím postupu, pokud chcete přepsat jakékoliv metody nebo vlastnosti v programovém testu uživatelského rozhraní, musíte tak učinit v souboru UIMap.cs.
V souboru UIMap.cs přidejte konstruktor a nastavte vlastnost SearchProperties vlastnosti UIStartButton tak, aby používala vlastnost AutomationID s hodnotou "buttonA":
public UIMap() { this.UIMainWindowWindow.UIStartButton.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA"; }
Na sestavení nabídce zvolte sestavit řešení.
V Průzkumníku Test spusťte CodedUITestMethod1.
Tentokrát programový test uživatelského rozhraní úspěšně dokončí všechny kroky v testu.V okně Výsledky testu se zobrazí stav Proběhlo.
Externí zdroje
Videa
Praktické cvičení
Nejčastější dotazy
Programové uživatelského rozhraní testuje nejčastější dotazy k - 1
Uživatelské rozhraní programové testy nejčastější dotazy týkající se -2
Fórum
Visual Studio uživatelského rozhraní automatizace testování (zahrnuje CodedUI)
Viz také
Koncepty
Ověřování kódu pomocí automatizace uživatelského rozhraní
Podporované konfigurace a platformy pro programové testy uživatelského rozhraní a zaznamenávání akcí