Aracılığıyla paylaş


Kodlanmış UI testinin anatomisi

Kodlanmış UI test projesinde kodlanmış bir UI testi oluşturduğunuzda çözümünüze birkaç dosya eklenir. Bu konuda bu dosyaları keşfetmek için örnek Kodlanmış UI Testi kullanacağız.

Gereksinimler

  • Visual Studio Ultimate, Visual Studio Premium

Kodlanmış Kullanıcı Arabirimi Testinin İçerikleri

Kodlanmış bir UI Testi oluşturduğunuzda Kodlanmış UI Test Oluşturucusu test edilen kullanıcı arabiriminin ve ayrıca da test yöntemlerinin, parametrelerin ve tüm testler için onayların bir eşlemesini oluşturur. Her test için bir sınıf dosyası oluşturur.

Dosya

İçindekiler

Düzenlenebilir mi?

UIMap.Designer.cs

Bildirimler bölümü

UIMap sınıfı (kısmi, otomatik oluşturulmuş)

Yöntemler

Özellikler

Hayır

UIMap.cs

UIMap sınıfı (kısmi)

Evet

CodedUITest1 cs

CodedUITest1 sınıfı

Yöntemler

Özellikler

Evet

UIMap.uitest

Test için UI öğesine ilişkin XML eşlemesi.

Hayır

Ff398062.collapse_all(tr-tr,VS.110).gifUIMap.Designer.cs

Bu dosya, Kodlanmış Arayüz Testi Oluşturucu tarafından otomatik olarak oluşturulan kodu içerir. Bu dosya, bir testin değiştirildiği her sefer yeniden oluşturulur, dolayısıyla bu içine kod ekleyebileceğiniz veya içindeki kodu değiştirebileceğiniz bir dosya değildir.

Ff398062.collapse_all(tr-tr,VS.110).gifBildirimler bölümü

Bu bölüm, bir Windows UI için aşağıdaki bildirimleri içermektedir.

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 ad alanı bir Windows kullanıcı arabirimi (UI) için dahil edilir. Web sayfası Kullanıcı Arabirimi, için ad alanı Microsoft.VisualStudio.TestTools.UITesting.HtmlControlsolmalıdır; Windows Presentation Foundation Arabirimi için ad alanıMicrosoft.VisualStudio.TestTools.UITesting.WpfControls olmalıdır.

Ff398062.collapse_all(tr-tr,VS.110).gifUIMap sınıfı

Dosyanın sonraki bölümü UIMap sınıfıdır.

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

Sınıf kodu, kısmi sınıf olarak bildirilmiş sınıfa uygulanan bir GeneratedCodeAttribute ile başlar. Özniteliğin bu dosyadaki her sınıfa da uygulandığını fark edeceksiniz. Bu sınıf için daha fazla kod içerebilecek olan diğer dosya daha sonra tartışılan UIMap.cs öğesidir.

Oluşturulan UIMap sınıfı test kaydedilirken belirtilen her yöntem için kod içerir.

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

UIMap sınıfının bu kısmı, aynı zamanda yöntemler tarafından gereksinilen her bir özellik için yaratılmış kodu içerir.

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(tr-tr,VS.110).gifUIMap yöntemleri

Her yöntem AddItems() yöntemine benzer bir yapıya sahiptir. Bu, daha anlaşılır hale getirmek için satır sonlarıyla sunulan kodun altında daha ayrıntılı olarak açıklanmaktadır.

/// <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);
}

Her yöntem tanımına ilişkin özet yorumu, bu yöntem için parametre değerlerine özgü hangi sınıfın kullanılacağını söyler. Bu durumda, daha sonra UIMap.cs dosyasında tanımlanan ve AddItemsParams özelliği tarafından döndürülen bir değer türü olan AddItemsParams sınıfıdır.

Yöntem kodunun en üst kısmında, yöntem tarafından kullanılacak UI nesnelerinin yerel değişkenlerini tanımlayan bir Variable Declarations bölgesi vardır.

Bu yöntemde hem UIItemWindow hem de UIItemEdit UICalculatorWindow sınıfı kullanarak erişilen özelliklerdir ve bu daha sonra UIMap.cs dosyasında tanımlanır.

Bundan sonra, klavyeden Hesap Makinesi uygulamasına AddItemsParams nesnesinin özelliklerini kullanarak metin gönderen satırlar bulunur.

VerifyTotal() yöntemi çok benzer bir yapıya sahiptir ve aşağıdaki onay kodunu içerir.

// Verify that 'Unknown Name' text box's property 'Text' equals '9. '
Assert.AreEqual(
    this.VerifyTotalExpectedValues.UIItemEditText, 
    uIItemEdit.Text);

Windows Hesap Makinesi uygulaması geliştiricisi, denetime ilişkin herkes tarafından kullanılan bir ad sağlamadığından metin kutusu adı bilinmeyen olarak listelenir. Gerçek değer testin başarısız olmasına neden olabilecek şekilde beklenen değere eşit değilse Assert.AreEqual yöntemi başarısız olur. Ayrıca, beklenen değerin ardından bir boşluğun geldiği ondalık bir noktayı içerdiğine dikkat edin. Bu belirli testin işlevselliğini herhangi bir zamanda değiştirmek isterseniz, ondalık noktaya ve boşluğa izin vermelisiniz.

Ff398062.collapse_all(tr-tr,VS.110).gifUIMap özellikleri

Her özellik kodu da sınıf genelinde çok standarttır. AddItemsParams özelliği için aşağıdaki kod AddItems() yönteminde kullanılır.

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

Özelliğin döndürmeden önceki değere sahip olması için mAddItemsParams adlı özel bir yerel değişken kullandığından emin olun. Geri döndüğü nesneye ilişkin özellik ve sınıf adları aynıdır. Sınıf daha sonra UIMap.cs dosyasında tanımlanır.

Bir özellik tarafından döndürülen her sınıf benzer şekilde yapılandırılmıştır. Aşağıdaki AddItemsParams sınıfıdır.

/// <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
}

UIMap.cs dosyasındaki tüm sınıflarda olduğu gibi, bu sınıf GeneratedCodeAttribute öğesiyle başlar. Bu küçük sınıfta daha önce anlatılmış olan UIMap.AddItems() yönteminde kullanılan Keyboard.SendKeys yönteminin parametreleri olarak kullanılmak üzere dize tanımlayan bir Fields bölümü bulunur. Bu dize alanlarındaki değerleri, bu parametreleri kullanılan yöntem çağrılmadan önce değiştirmek için kod yazabilirsiniz.

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

Varsayılan olarak, bu dosya yöntemleri ya da özellikleri olmayan kısmi bir UIMap sınıfı içerir.

Ff398062.collapse_all(tr-tr,VS.110).gifUIMap sınıfı

UIMap Sınıfının işlevselliğini genişletmek için burada özel kod yaratabilirsiniz. Bu dosyada oluşturduğunuz kod, test her değiştirildiğinde Coded UI Test Builder tarafından yeniden oluşturulmayacaktır.

UIMap başvurusunun tüm parçaları, UIMap sınıfının diğer herhangi bir parçasındaki yöntemleri ve özellikleri kullanabilir.

Ff398062.collapse_all(tr-tr,VS.110).gifCodedUITest1 cs

Bu dosya Kodlanmış Arayüzü Testi Oluşturucusu tarafından oluşturulur fakat test her değiştirildiğinde değiştirilmez; bu nedenle bu dosyadaki kodu değiştirebilirsiniz. Dosya adı, sizin testi oluştururken belirttiğiniz addan üretilir.

Ff398062.collapse_all(tr-tr,VS.110).gifCodedUITest1 sınıfı

Varsayılan olarak, bu dosya yalnızca bir sınıf tanımını içerir.

[CodedUITest]
public class CodedUITest1

Test çatısını bir test uzantısı olarak kabul etmeye izin veren T:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute öğesi sınıfa otomatik olarak uygulanır. Ayrıca, bunun kısmi bir sınıf olmadığına dikkat edin. Tüm sınıf kodu bu dosyada tutulur.

Ff398062.collapse_all(tr-tr,VS.110).gifCodedUITest1 özellikleri

Sınıf, dosyanın altında bulunan iki varsayılan özellik içerir. Bunlar değiştirilmemelidir.

/// <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(tr-tr,VS.110).gifCodedUITest1 yöntemleri

Varsayılan olarak, sınıf tek bir yöntem içerir.

public void CodedUITestMethod1()

Bu yöntem, UIMap Class hakkındaki bölümde açıklanmış olan testinizi kaydederken belirlediğiniz her bir UIMap yöntemini çağırır.

Adlandırılmış bir bölge Additional test attributes, kaldırılmamışsa, isteğe bağlı iki yöntem içerir.

// 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() yöntemi kendisine uygulanan diğer test yöntemlerinden önce bu yöntemi çağırmak için test çerçevesini belirten TestInitializeAttribute öğesine sahiptir. Benzer şekilde, MyTestCleanup() yöntemine TestCleanupAttribute uygulanmıştır. Bu, test çerçevesine diğer test yöntemleri çağrıldıktan sonra söz konusu yöntemi çağırmasını söyler. Bu yöntemlerin kullanılması isteğe bağlıdır. Bu test için, UIMap.LaunchCalculator() yöntemi MyTestInitialize() konumunda çağrılabilir ve UIMap.CloseCalculator() yöntemi MyTestCleanup() konumundan çağrılabilir (CodedUITest1Method1() konumu yerine).

CodedUITestAttribute öğesini kullanarak bu sınıfa daha fazla yöntem eklerseniz, test çerçevesi her yöntemi testin bir parçası olarak çağıracaktır.

Ff398062.collapse_all(tr-tr,VS.110).gifUIMap.uitest

Bu, kodlanmış UI testi kaydının ve bunun tüm parçalarının yapısını temsil eden bir XML dosyasıdır. Bunlar, bu sınıfların özelliklerine ve yöntemlere ek olarak eylemleri ve dersleri içerir. UIMap.Designer.cs dosyası testin yapısını yeniden oluşturmak için Kodlanmış UI Oluşturucusu tarafından oluşturulan kodu içerir ve test çerçevesine bağlantı sağlar.

UIMap.uitest dosyası doğrudan düzenlenemez. Ancak, testi değiştirmek için, otomatik olarak UIMap.uitest dosyasını ve UIMap.Designer.cs dosyasını değiştiren Kodlu UI Oluşturucu'yu kullanabilirsiniz.

Ayrıca bkz.

Başvuru

UIMap

Microsoft.VisualStudio.TestTools.UITesting.WinControls

Microsoft.VisualStudio.TestTools.UITesting.HtmlControls

Microsoft.VisualStudio.TestTools.UITesting.WpfControls

GeneratedCodeAttribute

Assert.AreEqual

Keyboard.SendKeys

CodedUITestAttribute

TestInitializeAttribute

TestCleanupAttribute

Kavramlar

Kodlanmış Kullanıcı Arabirimi Testleri Kullanarak Kod Doğrulama

Kodlanmış UI Testleri için En İyi Yöntemler

Birden Çok UI Haritası Bulunan Büyük Uygulamaları Sınama

Kodlanmış UI Testleri ve Eylem Kayıtları için Desteklenen Yapılandırmalar ve Platformlar

Diğer Kaynaklar

Kodlanmış UI testleri oluşturma