Sdílet prostřednictvím


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

Ff398062.collapse_all(cs-cz,VS.110).gifUIMap.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.

Ff398062.collapse_all(cs-cz,VS.110).gifDeklarač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.

Ff398062.collapse_all(cs-cz,VS.110).gifTří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

Ff398062.collapse_all(cs-cz,VS.110).gifMetody 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.

Ff398062.collapse_all(cs-cz,VS.110).gifVlastnosti 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.

Ff398062.collapse_all(cs-cz,VS.110).gifUIMap.cs

Ve výchozím nastavení tento soubor obsahuje částečné UIMap třída, která má žádné metody nebo vlastnosti.

Ff398062.collapse_all(cs-cz,VS.110).gifTří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.

Ff398062.collapse_all(cs-cz,VS.110).gifCodedUITest1.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í.

Ff398062.collapse_all(cs-cz,VS.110).gifTří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.

Ff398062.collapse_all(cs-cz,VS.110).gifVlastnosti 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

Ff398062.collapse_all(cs-cz,VS.110).gifMetody 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.

Ff398062.collapse_all(cs-cz,VS.110).gifUIMap.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

UIMap

Microsoft.VisualStudio.TestTools.UITesting.WinControls

Microsoft.VisualStudio.TestTools.UITesting.HtmlControls

Microsoft.VisualStudio.TestTools.UITesting.WpfControls

GeneratedCodeAttribute

Assert.AreEqual

Keyboard.SendKeys

CodedUITestAttribute

TestInitializeAttribute

TestCleanupAttribute

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í

Další zdroje

Vytváření kódované testy uživatelského rozhraní