Anatomie programového testu UI

 

Publikováno: červenec 2016

Nejnovější dokumentaci k sadě Visual Studio 2017 najdete tady.

Když vytvoříte programové uživatelského rozhraní testovací v projektu programové testování uživatelského rozhraní, několik souborů jsou přidány do vašeho řešení. V tomto tématu používáme příklad testy uživatelského rozhraní Coded objevovat tyto soubory.

Požadavky

  • Visual Studio Enterprise

Při vytváření programové uživatelského rozhraní testovací, Tvůrce testování uživatelského rozhraní programových se vytvoří mapa uživatelského rozhraní v rámci test a také zkušební metody, parametry a výrazy pro všechny testy. Vytvoří také soubor třídy pro každý test.

SouborObsahLze upravit?
UIMap.Designer.csOddíl deklarací

 UIMap třídy (částečné, automaticky vygenerována)

 Metody

 Vlastnosti
Ne
UIMap.csUIMap třídy (částečné)Ano
CodedUITest1.csTřída CodedUITest1

 Metody

 Vlastnosti
Ano
UIMap.uitestMapování XML uživatelského rozhraní pro test.Ne

UIMap.Designer.cs

Tento soubor obsahuje kód, který je automaticky vytvořen pomocí Tvůrce testování uživatelského rozhraní programových při vytvoření testu. Tento soubor je znovu vytvořen pokaždé, když se změní test, takže není soubor, ve kterém můžete přidávat nebo upravovat kód.

Oddíl deklarací

Tato část obsahuje následující deklarace 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 zahrnuta pro uživatelské rozhraní (UI) systému Windows. Pro webovou stránku uživatelského rozhraní, může být obor názvů Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; pro systém Windows Presentation Foundation uživatelského rozhraní, obor názvů by být Microsoft.VisualStudio.TestTools.UITesting.WpfControls.

Třída UIMap

Další část souboru je T:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap třídy.

[GeneratedCode("Coded UITest Builder", "10.0.21221.0")]  
public partial class UIMap  

Kód třídy začíná GeneratedCodeAttribute která je použita na třídu, která je deklarován jako dílčí třídu. Zjistíte, že je atribut také použit na každé třídy v tomto souboru. Další 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, kdy byla zaznamenána test.

public void LaunchCalculator()  
public void AddItems()  
public void VerifyTotal()  
public void CleanUp()  

Tato část T:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap Třída také zahrnuje generovaný kód pro každou vlastnost, který je požadován metody.

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() metody. To je vysvětleno podrobněji pod kód, který je zobrazen společně s konce řádků, chcete-li přidat jasné.

/// <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áře pro každou metodu definici určí, které třídy, které má být použit pro hodnoty parametru pro danou metodu. V takovém případě je AddItemsParams Třída, která je definována v později UIMap.cs soubor, a který je také typ hodnoty, který je vrácen AddItemsParams vlastnost.

V horní části Metoda kód je Variable Declarations oblast, která definuje místní proměnné pro uživatelské rozhraní objekty, které se použijí metodou.

V této metodě oba UIItemWindow a UIItemEdit jsou vlastnosti, které jsou přistupovat pomocí UICalculatorWindow Třída, která je definována v později UIMap.cs souboru.

Dále jsou řádky, které odeslat text z klávesnice do aplikace Kalkulačka pomocí vlastnosti AddItemsParams objektu.

VerifyTotal() Metoda má velmi podobné strukturu a zahrnuje následující kód kontrolní výraz.

// 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 systému Windows Kalkulačka neposkytl veřejně dostupný název ovládacího prvku. Assert.AreEqual Metoda selže, kdy skutečná hodnota není rovno očekávaná hodnota, kterou by způsobilo test selhání. Všimněte si také, že očekávaná hodnota zahrnuje desetinné čárky, za kterým následuje mezeru. Pokud máte někdy upravit některé funkce této konkrétní zkoušky, je třeba povolit pro tento desetinné čárky a mezery.

Vlastnosti UIMap

Kód pro každou vlastnost je také velmi standardní v celém třídy. Následující kód pro AddItemsParams vlastnost se používá v AddItems() metody.

public virtual AddItemsParams AddItemsParams  
{  
    get  
    {  
        if ((this.mAddItemsParams == null))  
        {  
            this.mAddItemsParams = new AddItemsParams();  
        }  
        return this.mAddItemsParams;  
    }  
}  

Oznámení, že vlastnost používá privátní místní proměnné s názvem mAddItemsParams pro uložení hodnot předtím, než vrátí jej. Název vlastnosti a název třídy pro objekt, který vrátí jsou stejné. Třída je definována v později UIMap.cs souboru.

Každou třídu, která je vrácena vlastnost strukturovaná 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, tato třída má na začátku GeneratedCodeAttribute. V této třídě malé je Fields oblast, která definuje řetězce, které mají být použity jako parametry pro Keyboard.SendKeys metodu, která se používá v UIMap.AddItems() metodu, která byla dříve zmíněných. Můžete napsat kód k nahrazení hodnoty v těchto polí s řetězcem, a teprve pak volat metodu, ve které se používají tyto parametry.

UIMap.cs

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

Třída UIMap

Toto je, kde můžete vytvořit vlastní kód pro rozšíření funkcí T:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap třídy. Kód, který vytvoříte v tomto souboru nebude znovu generovat Tvůrce testování uživatelského rozhraní programových pokaždé, když je upraven test.

Žádná z částí T:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap pomocí metody a vlastnosti z kterékoli jiné části T:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap třídy.

CodedUITest1.cs

Tento soubor je generován Tvůrce testování uživatelského rozhraní programových, ale nebude znovu vytvořena pokaždé, když je upraven test, takže můžete upravit kód v tomto souboru. Název souboru, je vygenerována název, který jste zadali pro test při jeho vytvoření.

Třída CodedUITest1

Ve výchozím nastavení tento soubor obsahuje definici pro pouze jednu třídu.

[CodedUITest]  
public class CodedUITest1  

T:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute je automaticky použity na třídu, která umožňuje testovací rozhraní k rozpozná jako testování rozšíření. Všimněte si také, že se nejedná o 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é se nachází na konci souboru. Nesmí být upraven.

/// <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í třída obsahuje pouze jednu metodu.

public void CodedUITestMethod1()  

Tato metoda volá všechny UIMap metodu, kterou jste zadali, kdy jste zaznamenali test, který je popsán v části na UIMap třídy.

Oblast, která je 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   
    // http://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   
    // http://go.microsoft.com/fwlink/?LinkId=179463  
  
    // You could move this line from the CodedUITestMethod1() method  
    this.UIMap.CloseCalculator();  
}  

MyTestInitialize() Metoda má TestInitializeAttribute použité k němu, který udává testovací rozhraní k volání této metody před jiné zkušební metody. Podobně MyTestCleanup() Metoda má TestCleanupAttribute použity k němu, které určí testovací rozhraní k volání této metody za všechny ostatní metody test volána. Použití těchto metod je volitelné. Pro tento test UIMap.LaunchCalculator() metodu lze volat z MyTestInitialize() a UIMap.CloseCalculator() metodu lze volat z MyTestCleanup() místo z CodedUITest1Method1().

Pokud přidáte další metody pro tuto třídu pomocí CodedUITestAttribute, testovací rozhraní zavolá každá metoda v rámci testu.

UIMap.uitest

Toto je soubor XML představuje strukturu programové uživatelského rozhraní testovat zaznamenávání a všechny jeho části. Patří sem akce a třídy kromě metody a vlastnosti těchto tříd. UIMap.Designer.cs soubor obsahuje kód, který je generován Tvůrce programové uživatelského rozhraní pro reprodukci strukturu testu a poskytuje připojení k testovací rozhraní.

UIMap.uitest Soubor není přímo upravovat. Avšak, můžete použít Tvůrce uživatelského rozhraní programových k úpravě test, který automaticky upraví UIMap.uitest souboru a UIMap.Designer.cs souboru.

T:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap
Microsoft.VisualStudio.TestTools.UITesting.WinControls
Microsoft.VisualStudio.TestTools.UITesting.HtmlControls
Microsoft.VisualStudio.TestTools.UITesting.WpfControls
GeneratedCodeAttribute
Assert.AreEqual
Keyboard.SendKeys
CodedUITestAttribute
TestInitializeAttribute
TestCleanupAttribute
Použití automatizace uživatelského rozhraní k testování kódu
Vytváření programových testů UI
Doporučené postupy pro programové testy UI
Testování rozsáhlé aplikace s více mapami uživatelského rozhraní
Podporované konfigurace a platformy pro programové testy uživatelského rozhraní a zaznamenávání akcí

Zobrazit: