Anatomia kodowanego testu interfejsu użytkownika
Po utworzeniu kodowane UI testowy w zakodowanej projektu testowego interfejsu użytkownika, kilka plików są dodawane do rozwiązania.W tym temacie użyjemy przykład Coded interfejsu użytkownika Test do zbadania tych plików.
Wymagania
- Visual Studio Ultimate, Visual Studio Premium
Zawartość Test kodowane jako interfejsu użytkownika
Podczas tworzenia kodowane UI testowy, Kodowane UI przetestować konstruktora tworzy mapę interfejsu użytkownika w obszarze badania i również metody badań, parametrów i twierdzeń we wszystkich testach.Tworzy również plik klasy dla każdego testu.
Plik |
Zawartość |
Edytowalny? |
---|---|---|
UIMap.Designer.cs |
Sekcji deklaracji Klasa UIMap (częściowe, generowana automatycznie) Metody Właściwości |
Nie |
UIMap.cs |
Klasa UIMap (częściowa) |
Tak |
CodedUITest1.cs |
Klasa CodedUITest1 Metody Właściwości |
Tak |
UIMap.uitest |
Mapa XML interfejsu użytkownika dla badania. |
Nie |
UIMap.Designer.cs
Ten plik zawiera kod, który jest tworzony automatycznie przez Kodowane UI przetestować konstruktora podczas tworzenia testu.Ten plik jest ponownie tworzony w każdym razem, gdy zmienia się testowi, tak aby nie jest plikiem w którym można dodawać lub modyfikować kod.
Sekcji deklaracji
Ta sekcja zawiera następujące deklaracje dla interfejsu użytkownika systemu 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 Obszaru nazw jest włączone dla interfejsu użytkownika (UI) systemu Windows.Dla strony sieci Web interfejsu użytkownika będzie obszaru nazw Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; dla UI Foundation prezentacji systemu Windows, będzie obszaru nazw Microsoft.VisualStudio.TestTools.UITesting.WpfControls.
Klasa UIMap
W kolejnej części pliku jest UIMap klasy.
[GeneratedCode("Coded UITest Builder", "10.0.21221.0")]
public partial class UIMap
Kod klasy rozpoczyna się od GeneratedCodeAttribute zastosowanego do klasy, która jest zadeklarowana jako częściowe.Można zauważyć, że atrybut jest również stosowana do każdej klasy w tym pliku.Plik, który może zawierać więcej kodu dla tej klasy jest UIMap.cs, który omówiono w dalszej części.
Wygenerowanej UIMap klasa zawiera kod dla każdej metody, która została określona, kiedy został zapisany, badania.
public void LaunchCalculator()
public void AddItems()
public void VerifyTotal()
public void CleanUp()
Ta część UIMap klasa obejmuje również wygenerowany kod dla każdej właściwości, które są wymagane przez 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żda metoda ma strukturę, która jest podobna do AddItems() metoda.Jest to wyjaśnione bardziej szczegółowo w obszarze kod, który jest przedstawione wraz z podziały wiersza, aby dodać jasności.
/// <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);
}
Podsumowanie komentarz dla każdej definicji metody informuje klasy, które wartości parametru dla danej metody.W takim przypadku jest AddItemsParams klasy, która jest zdefiniowana w później w UIMap.cs pliku, a który jest także typ wartości, który jest zwracany przez AddItemsParams właściwość.
W górnej części metodę kod jest Variable Declarations regionu, który definiuje zmienne lokalne dla interfejsu użytkownika obiektów, które będą używane przez metodę.
W tej metodzie zarówno UIItemWindow i UIItemEdit są właściwości, które są dostępne za pomocą UICalculatorWindow klasy, która jest zdefiniowana w później w UIMap.cs pliku.
Dalej są wiersze, które wysyłanie tekstu z klawiatury do aplikacji Kalkulator za pomocą właściwości AddItemsParams obiektu.
VerifyTotal() Metoda ma bardzo podobną strukturę i zawiera poniższy kod potwierdzenia.
// Verify that 'Unknown Name' text box's property 'Text' equals '9. '
Assert.AreEqual(
this.VerifyTotalExpectedValues.UIItemEditText,
uIItemEdit.Text);
Nazwa pola tekstowe są wymienione jako nieznane, ponieważ dewelopera aplikacji Kalkulator systemu Windows nie dostarczył publicznie dostępnych nazwę dla formantu.Assert.AreEqual Metoda nie działa, gdy rzeczywista wartość nie jest równa wartości oczekiwanej, które mogłyby spowodować test nie powiedzie się.Również zauważyć, że wartość oczekiwana obejmuje przecinka dziesiętnego, po którym występuje spacja.Jeśli kiedykolwiek zmodyfikować funkcjonalność ten test, musi pozwalać na tym punktem dziesiętnym i przestrzeni.
Właściwości UIMap
Kod dla każdej właściwości również jest bardzo standardem w całej klasy.Następujący kod dodaje dla AddItemsParams jest używana w AddItems() metoda.
public virtual AddItemsParams AddItemsParams
{
get
{
if ((this.mAddItemsParams == null))
{
this.mAddItemsParams = new AddItemsParams();
}
return this.mAddItemsParams;
}
}
Obwieszczenie, że właściwość używa prywatnej zmiennej lokalnej o nazwie mAddItemsParams do przechowywania wartości, przed wyświetleniem go.Nazwa właściwości oraz nazwę klasy obiektu, który zwraca są takie same.Klasa jest zdefiniowana później w UIMap.cs pliku.
Każdej klasy, który jest zwracany przez właściwość strukturę podobną.Oto AddItemsParams klasy.
/// <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
}
Podobnie jak w przypadku wszystkich klas w UIMap.cs pliku, klasa ta zaczyna się od GeneratedCodeAttribute.W tej klasie małych jest Fields regionu, który definiuje ciągi znaków do wykorzystania jako parametry dla Keyboard.SendKeys metodę, która jest używana w UIMap.AddItems() metodę, która została omówiona wcześniej.Można napisać kod, aby zastąpić wartości w tych polach ciąg przed wywoływana jest metoda, w którym te parametry są używane.
UIMap.cs
Domyślnie ten plik zawiera częściowego UIMap klasy, która nie ma metody lub właściwości.
Klasa UIMap
Jest to, gdzie można utworzyć niestandardowy kod, aby rozszerzyć funkcjonalność UIMap klasy.Kod, które są tworzone w tym pliku nie zostaną wygenerowane przez Kodowane konstruktora przetestować interfejsu użytkownika każdym razem, gdy badanie jest modyfikowany.
Wszystkie części UIMap można użyć metod i właściwości z każdej innej części UIMap klasy.
CodedUITest1.cs
Ten plik jest generowany przez Kodowane UI przetestować konstruktora, ale nie jest ponownie tworzony każdym razem, gdy badanie zostanie zmodyfikowany, tak aby można zmodyfikować kod w tym pliku.Nazwa pliku jest generowany na podstawie nazwy, który został określony dla badania, podczas jego tworzenia.
Klasa CodedUITest1
Domyślnie ten plik zawiera definicję klasy tylko jeden.
[CodedUITest]
public class CodedUITest1
T:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute jest automatycznie stosowane do klasy, która pozwala framework testujący do uznania go jako rozszerzenie testowania.Również zauważyć, że nie jest klasą częściowe.Wszystkie kod klasy znajduje się w tym pliku.
Właściwości CodedUITest1
Klasa zawiera dwie właściwości domyślne, które znajdują się w dolnej części pliku.Nie należy modyfikować.
/// <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
Domyślnie klasa zawiera tylko jedną metodę.
public void CodedUITestMethod1()
Ta metoda wymaga każdy UIMap metodę, która jest określony, których zarejestrowano teście, który jest opisany w sekcji na Klasy UIMap.
Region, który jest zatytułowany Additional test attributes, jeśli komentarzem, zawiera dwie fakultatywne 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 ma TestInitializeAttribute stosowane do niego, która nakazuje framework testujący w celu wywołania tej metody przed inne metody badania.Podobnie MyTestCleanup() metoda ma TestCleanupAttribute do niego stosować, który informuje framework testujący w celu wywołania tej metody po wszystkich innych metod badania zostały nazwane.Korzystanie z tych metod jest opcjonalne.Dla tego testu UIMap.LaunchCalculator() metoda może być wywołana z MyTestInitialize() i UIMap.CloseCalculator() metoda może być wywołana z MyTestCleanup() a nie z CodedUITest1Method1().
Jeśli możesz dodać więcej metod do tej klasy za pomocą CodedUITestAttribute, framework testujący będzie połączenie każdej metody jako część egzaminu.
UIMap.uitest
Jest to, że reprezentuje strukturę kodowane jako interfejs użytkownika test nagrywania plików XML oraz wszystkie jego części.Obejmują one działania i klas, oprócz metod i właściwości tych klas.UIMap.Designer.cs plik zawiera kod, który jest generowany przez Konstruktor kodowane interfejsu użytkownika, aby odtworzyć strukturę badania i zapewnia połączenie do struktury programu badań.
UIMap.uitest Plik nie jest bezpośrednio edytowalny.Jednak można użyć konstruktora UI kodowane zmodyfikować test, który automatycznie modyfikuje UIMap.uitest plik i UIMap.Designer.cs pliku.
Zobacz też
Informacje
Microsoft.VisualStudio.TestTools.UITesting.WinControls
Microsoft.VisualStudio.TestTools.UITesting.HtmlControls
Microsoft.VisualStudio.TestTools.UITesting.WpfControls
Koncepcje
Weryfikowanie kodu przy użyciu automatyzacji interfejsu użytkownika
Najlepsze praktyki dotyczące kodowanych testów interfejsu użytkownika
Testowanie dużej aplikacji przy użyciu wielu map UI