Anatomie Test kódované uživatelského rozhraní
Při vytváření kódované UI testovací v kódované projekt testů UI několika soubory jsou přidány do vašeho řešení.V tomto tématu použijeme příklad Coded UI Test zkusit prozkoumat obsah těchto souborů.
Požadavky
- Visual Studio Ultimate, Visual Studio Premium
Obsah testu kódované uživatelského rozhraní
Při vytváření kódované UI testovací, Kódované Tvůrce testovat UI vytvoří mapování uživatelského rozhraní v rámci testu a také zkušební metody, parametry a výrazy pro všechny testy.Vytvoří také soubor třídy pro každý test.
Soubor |
Obsah |
Lze upravit? |
---|---|---|
UIMap.Designer.cs |
Deklarační sekce Třída UIMap (částečné, generováno automaticky) Metody Vlastnosti |
Ne |
UIMap.cs |
Třída UIMap (částečně) |
Ano |
CodedUITest1.cs |
Třída CodedUITest1 Metody Vlastnosti |
Ano |
UIMap.uitest |
Mapování XML uživatelského rozhraní pro zkoušku. |
Ne |
UIMap.Designer.cs
Tento soubor obsahuje kód, který je automaticky vytvořen Kódované Tvůrce testovat UI vytvoření testu.Tento soubor je znovu vytvoří při každém testu se změní tak, že se nejedná o soubor, ve kterém můžete přidat nebo upravit kód.
Deklarační sekce
Tato část obsahuje následující prohlášení pro uživatelské rozhraní systému Windows.
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Windows.Input;
using Microsoft.VisualStudio.TestTools.UITest.Extension;
using Microsoft.VisualStudio.TestTools.UITesting;
using Microsoft.VisualStudio.TestTools.UITesting.WinControls;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard;
using Mouse = Microsoft.VisualStudio.TestTools.UITesting.Mouse;
using MouseButtons = System.Windows.Forms.MouseButtons;
Microsoft.VisualStudio.TestTools.UITesting.WinControls Obor názvů je součástí systému Windows uživatelské rozhraní (UI).Webové stránky uživatelského rozhraní, obor názvů by Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; pro uživatelské rozhraní systému Windows prezentace Foundation, obor názvů by Microsoft.VisualStudio.TestTools.UITesting.WpfControls.
Třída UIMap
Další část souboru je UIMap třídy.
[GeneratedCode("Coded UITest Builder", "10.0.21221.0")]
public partial class UIMap
Kód třídy začíná GeneratedCodeAttribute , aplikován na třídu, která je deklarována jako dílčí třídy.Můžete si všimnout, že je atribut aplikován také na každé třídy v tomto souboru.Soubor, který může obsahovat další kód pro tuto třídu je UIMap.cs, který je uveden dále.
Generované UIMap třída obsahuje kód pro každou metodu, která byla zadána při zkoušce byla zaznamenána.
public void LaunchCalculator()
public void AddItems()
public void VerifyTotal()
public void CleanUp()
Tato část UIMap třída také zahrnuje generovaný kód pro každou vlastnost, která je vyžadována metodami.
public virtual LaunchCalculatorParams LaunchCalculatorParams
public virtual AddItemsParams AddItemsParams
public virtual VerifyTotalExpectedValues VerifyTotalExpectedValues
public virtual CalculateItemsParams CalculateItemsParams
public virtual VerifyMathAppTotalExpectedValues
VerifyMathAppTotalExpectedValues
public UIStartMenuWindow UIStartMenuWindow
public UIRunWindow UIRunWindow
public UICalculatorWindow UICalculatorWindow
public UIStartWindow UIStartWindow
public UIMathApplicationWindow UIMathApplicationWindow
Metody UIMap
Každá metoda má strukturu, která se podobá AddItems() metoda.To je vysvětleno podrobněji pod kód, který je předloženo společně se konce řádků doplnit vysvětlení.
/// <summary>
/// AddItems - Use 'AddItemsParams' to pass parameters into this method.
/// </summary>
public void AddItems()
{
#region Variable Declarations
WinControl uICalculatorDialog =
this.UICalculatorWindow.UICalculatorDialog;
WinEdit uIItemEdit =
this.UICalculatorWindow.UIItemWindow.UIItemEdit;
#endregion
// Type '{NumPad7}' in 'Calculator' Dialog
Keyboard.SendKeys(uICalculatorDialog,
this.AddItemsParams.UICalculatorDialogSendKeys,
ModifierKeys.None);
// Type '{Add}{NumPad2}{Enter}' in 'Unknown Name' text box
Keyboard.SendKeys(uIItemEdit,
this.AddItemsParams.UIItemEditSendKeys,
ModifierKeys.None);
}
Souhrnný komentář pro každou definici metody udává, které třídy synchrozizace používat pro hodnoty parametrů pro danou metodu.V tomto případě je AddItemsParams třídu, která je definována v později UIMap.cs souboru a která je také hodnotový typ, který je vrácen AddItemsParams vlastnost.
V horní části metody kód je Variable Declarations region, který definuje místní proměnné pro uživatelské rozhraní objektů, které se budou používat metodou.
V této metodě obě UIItemWindow a UIItemEdit jsou vlastnosti, které jsou přístupné pomocí UICalculatorWindow třída, která je definována v později UIMap.cs souboru.
Dále jsou čáry, které odeslat text z klávesnice do aplikace Kalkulačka pomocí vlastnosti AddItemsParams objektu.
VerifyTotal() Metoda má velmi podobné strukturu a obsahuje následující kód výrazu.
// Verify that 'Unknown Name' text box's property 'Text' equals '9. '
Assert.AreEqual(
this.VerifyTotalExpectedValues.UIItemEditText,
uIItemEdit.Text);
Název textového pole je uveden jako neznámý, protože vývojář aplikace Kalkulačka Windows neposkytl veřejně dostupný název ovládacího prvku.Assert.AreEqual Metoda selže v případě, že skutečná hodnota není rovna očekávané hodnoty, které by mohly být test nezdaří.Všimněte si také, že očekávaná hodnota obsahuje desetinnou čárku, za kterým následuje mezera.Pokud budete někdy muset upravit některé funkce této zvláštní zkoušky, je třeba povolit pro dané desetinné čárky a mezery.
Vlastnosti UIMap
Kód pro každou vlastnost je také velmi standardní v celé třídě.Následující kód pro AddItemsParams vlastnost se používá AddItems() metoda.
public virtual AddItemsParams AddItemsParams
{
get
{
if ((this.mAddItemsParams == null))
{
this.mAddItemsParams = new AddItemsParams();
}
return this.mAddItemsParams;
}
}
Všimněte si, že vlastnost používá soukromé lokální proměnnou s názvem mAddItemsParams pro uložení hodnot před vrátí jej.Název vlastnosti a název třídy pro objekt, který vrátí jsou stejné.Třídy je definována v později UIMap.cs souboru.
Každá třída, který je vrácený vlastnost je strukturován podobně.Dále je AddItemsParams třídy.
/// <summary>
/// Parameters to be passed into 'AddItems'
/// </summary>
[GeneratedCode("Coded UITest Builder", "10.0.21221.0")]
public class AddItemsParams
{
#region Fields
/// <summary>
/// Type '{NumPad7}' in 'Calculator' Dialog
/// </summary>
public string UICalculatorDialogSendKeys = "{NumPad7}";
/// <summary>
/// Type '{Add}{NumPad2}{Enter}' in 'Unknown Name' text box
/// </summary>
public string UIItemEditSendKeys = "{Add}{NumPad2}{Enter}";
#endregion
}
Stejně jako u všech tříd v UIMap.cs soubor, začíná této třídy GeneratedCodeAttribute.V této malé třídy je Fields region, který definuje řetězce pro použití jako parametry pro Keyboard.SendKeys metodu, která se používá v UIMap.AddItems() metodu, která byla dříve zmíněných.Můžete psát kód pro nahrazení hodnoty v těchto polích řetězce dříve, než je zavolána metoda, ve kterém se používají tyto parametry.
UIMap.cs
Ve výchozím nastavení tento soubor obsahuje částečné UIMap třída, která má žádné metody nebo vlastnosti.
Třída UIMap
To je, kde můžete vytvořit vlastní kód pro rozšíření funkcí UIMap třídy.Kód, který vytvoříte v tomto souboru nebude možné znovu generovat Kódované Tvůrce testovat UI pokaždé, když test je upraven.
Všechny části UIMap můžete použít metody a vlastnosti z jakékoliv jiné části UIMap třídy.
CodedUITest1.cs
Tento soubor je generován Kódované Tvůrce testovat UI, ale není znovu vytvořena pokaždé, když je změněn test, takže můžete upravit kód v tomto souboru.Název souboru je generován z názvu, který jste určili pro zkoušku při jeho vytvoření.
Třída CodedUITest1
Ve výchozím nastavení tento soubor obsahuje definice pro pouze jednu třídu.
[CodedUITest]
public class CodedUITest1
T:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute automaticky aplikován na třídu, která umožňuje testování rámec rozpoznat jako testování rozšíření.Všimněte si také, že to není dílčí třídu.Všechny třídy kód je obsažen v tomto souboru.
Vlastnosti CodedUITest1
Třída obsahuje dvě výchozí vlastnosti, které jsou umístěny v dolní části souboru.Nesmí být změněn.
/// <summary>
/// Gets or sets the test context which provides
/// information about and functionality for the current test run.
///</summary>
public TestContext TestContext
public UIMap UIMap
Metody CodedUITest1
Ve výchozím nastavení obsahuje pouze jednu metodu třídy.
public void CodedUITestMethod1()
Tato metoda volá každého UIMap metodu, kterou jste zadali, když jste si poznamenali test, který je popsán v části na UIMap třídy.
Oblast s názvem Additional test attributes, je-li uncommented, obsahuje dvě volitelné metody.
// Use TestInitialize to run code before running each test
[TestInitialize()]
public void MyTestInitialize()
{
// 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
// You could move this line from the CodedUITestMethod1() method
this.UIMap.LaunchCalculator();
}
// Use TestCleanup to run code after each test has run
[TestCleanup()]
public void MyTestCleanup()
{
// 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
// You could move this line from the CodedUITestMethod1() method
this.UIMap.CloseCalculator();
}
MyTestInitialize() Metoda má TestInitializeAttribute u, který říká testování rámec pro volání této metody před jiné zkušební metody.Podobně MyTestCleanup() metoda má TestCleanupAttribute použita, které sděluje testování rámec pro tuto metodu volat po všech ostatních zkušebních metod zavolání.Použití těchto metod je volitelné.Pro tento test UIMap.LaunchCalculator() metody lze volat z MyTestInitialize() a UIMap.CloseCalculator() metody lze volat z MyTestCleanup() namísto z CodedUITest1Method1().
Pokud přidáte další metody pro tuto třídu pomocí CodedUITestAttribute, testování rámec bude volání jednotlivých metod jako část zkoušky.
UIMap.uitest
Toto je soubor XML, představuje strukturu kódované uživatelského rozhraní vyzkoušet záznam a všechny jeho části.Patří sem akce a třídy, metody a vlastnosti těchto tříd.UIMap.Designer.cs soubor obsahuje kód, který je generován pomocí uživatelského rozhraní tvůrce kódované pro reprodukci struktura zkoušky a poskytuje připojení k testování rámec.
UIMap.uitest Soubor není přímo upravovat.Však můžete použít uživatelské rozhraní tvůrce kódované upravit test, který automaticky změní UIMap.uitest soubor a UIMap.Designer.cs souboru.
Viz také
Referenční dokumentace
Microsoft.VisualStudio.TestTools.UITesting.WinControls
Microsoft.VisualStudio.TestTools.UITesting.HtmlControls
Microsoft.VisualStudio.TestTools.UITesting.WpfControls
Koncepty
Ověřování kódu pomocí programových testů uživatelského rozhraní
Doporučené postupy pro zkoušky kódované uživatelského rozhraní
Testování velké aplikace pomocí uživatelského rozhraní pro více map
Podporované konfigurace a platformy pro programové testy uživatelského rozhraní a zaznamenávání akcí