Aracılığıyla paylaş


Nasıl Yapılır: Veri Temelli Birim Testi Oluşturma

Microsoft birim test çerçevesine için yönetilen kod kullanarak, veri kaynağından test yönteminde kullanılan değerleri almak için bir birim sınama yöntemi ayarlayabilirsiniz.Yöntemi tek bir yöntem kullanarak giriş çeşitli test kolaylaştırır veri kaynağındaki her satır için sırayla çalıştırılır.

Bu konu aşağıdaki bölümleri içerir:

Verilere birim test oluşturma, aşağıdaki adımları içerir:

  1. Test yöntemi kullandığınız değerleri içeren bir veri kaynağı oluşturun.Veri kaynağını sınama çalıştırır makinede kayıtlı herhangi bir türü olabilir.

  2. Bir özel ekleme TestContext alan ve genel TestContext test sınıfı özelliği.

  3. Birim test yöntemi oluşturmak ve eklemek bir DataSourceAttribute özniteliği için.

  4. Kullanmak DataRow bir sınamada kullandığınız değerleri almak için dizin oluşturucu özelliği.

Test altında yöntemi

Örneğin, diyelim biz oluşturduğunuz varsayılır:

  1. Bir çözüm olarak adlandırılan MyBank kabul eder ve işler için farklı türde Hesap hareketleri.

  2. Bir projedeki MyBank adlı BankDb , Hesap hareketleri yönetir.

  3. Bir sınıf olarak adlandırılan Maths , DbBank herhangi bir işlem için Banka yararlı olmasını sağlamak için matematiksel işlevleri gerçekleştiren proje.

  4. Birim test adlı bir proje BankDbTests davranışını sınamak için BankDb bileşeni.

  5. Birim test adında bir sınıfı MathsTests davranışını doğrulamak için Maths sınıfı.

Biz bir yöntemle test Maths bir döngü kullanarak iki tamsayılar ekler:

public int AddIntegers(int first, int second)
{
    int sum = first;
    for( int i = 0; i < second; i++)
    {
        sum += 1;
    }
    return sum;
}

Veri kaynağı oluşturma

Test etmek için AddIntegers , biz oluşturma yöntemi veri kaynağı parametreleri ve iade edilmesini beklediğiniz toplam değerleri aralığını belirtir.Örneğimizde, biz adlı bir Sql Compact veritabanı oluşturmak MathsData adlı bir tablo AddIntegersData aşağıdaki sütun adlarını ve değerlerini içeren

FirstNumber

SecondNumber

Sum

0

1

1

1

1

2

2

-3

-1

Bir TestContext test sınıfı ekleme

Birim test çerçevesine oluşturur bir TestContext verilere sınama veri kaynağı bilgilerini depolamak için nesne.Framework, ardından bu nesnenin değeri olarak ayarlar TestContext biz oluşturma özelliği.

    private TestContext testContextInstance;
    public TestContext TestContext
    {
        get { return testContextInstance; }
        set { testContextInstance = value; }
    }

Test yönteminizi verilerine erişim DataRow Dizin Oluşturucu özelliği TestContext.

Sınama yöntemi yazma

Sınama yöntemi AddIntegers oldukça basittir.Veri kaynağındaki her satır için biz çağrısı AddIntegers ile FirstNumber ve SecondNumber sütun değerleri parametre olarak ve biz dönüş değeri karşı doğrulamak toplam sütun değeri:


    [DataSource(@"Provider=Microsoft.SqlServerCe.Client.4.0; Data Source=C:\Data\MathsData.sdf;", "Numbers")]
    [TestMethod()]
    public void AddIntegers_FromDataSourceTest()
    {
        var target = new Maths();
        
        // Access the data
        int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);
        int y = Convert.ToInt32(TestContext.DataRow["SecondNumber"]); 
        int expected = Convert.ToInt32(TestContext.DataRow["Sum"]);
        int actual = target.IntegerMethod(x, y);
        Assert.AreEqual(expected, actual,
            "x:<{0}> y:<{1}>",
            new object[] {x, y});

    }

Dikkat Assert yöntemi içeren bir ileti görüntüler x ve y başarısız yineleme değerleri.Varsayılan olarak, asserted değerleri expected ve actual, zaten başarısız sınama ayrıntıları dahil.

ms182527.collapse_all(tr-tr,VS.110).gifDataSourceAttribute belirtme

DataSource Özniteliği, sınama yöntemi bağlantı dizesi veri kaynağı ve kullandığınız tablonun adını belirtir.Bağlantı dizesinde tam bilgi, kullandığınız veri kaynağının türüne bağlı olarak farklılık gösterir.Bu örnekte, biz SqlServerCe veritabanı kullanılır.

    [DataSource(@"Provider=Microsoft.SqlServerCe.Client.4.0;Data Source=C:\Data\MathsData.sdf", "AddIntegersData")]

DataSource özniteliğine üç oluşturucusu yok.

[DataSource(dataSourceSettingName)]

Yapıcı bir parametre ile çözüm app.config dosyasında depolanan bağlantı bilgilerini kullanır.DataSourceSettingsName bağlantı bilgilerini belirleyen yapılandırma dosyasında bir Xml öğesi adı.

App.config dosyası kullanarak birim test kendisini değişiklik yapmadan veri kaynağının konumunu değiştirmenize olanak sağlar.App.config dosyası oluşturma ve kullanma hakkında daha fazla bilgi için bkz:İzlenecek yol: bir veri kaynağı tanımlamak için bir yapılandırma dosyası kullanılıyor.

[DataSource(connectionString, tableName)]

DataSource Kurucusu iki parametre ile bağlantı dizesi veri kaynağı ve veri sınama yöntemi içeren tablonun adını belirtir.

Bağlantı dizesi veri kaynağı türünü türüne bağlıdır, ancak sabit veri sağlayıcının adını belirtir bir sağlayıcı öğesi içermelidir.

[DataSource(
    dataProvider, 
    connectionString, 
    tableName,
    dataAccessMethod
    )]

ms182527.collapse_all(tr-tr,VS.110).gifVeri erişim için TestContext.DataRow kullanma

İçindeki verilere erişmek için AddIntegersData tablo, kullanmak TestContext.DataRow Dizin Oluşturucu.DataRowolan bir DataRow biz dizin veya sütun adları sütun değerleri almak için nesne.Nesneler olarak değer döndürdüğünden uygun türe dönüştürmek gerekir:

int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);

Sınama çalıştırma ve sonuçlarını görüntüleme

Sınama yöntemi yazma işlemini bitirdiğinizde, test projeyi derleyin.Sınama yöntemi sınama Explorer penceresinde görünür Değil sınamalar grubu.Çalıştırmak, yazma ve sınamalarınızı yeniden çalıştırın, Explorer sınama sonuçlarını gruplar halinde görüntüler Sınamaları başarısız, Testlerini geçilen, ve Değil sınamalar.Seçebileceğiniz Çalışan tüm tüm sınamaları çalıştırın veya Çalıştır... sınamaları çalıştırmak için alt kümesini seçmek için.

Test sonuçları çubuğu Explorer'ın üst sınamanız çalışır gibi animasyon eklenmiş.Sınama çalışması sonunda tüm sınamaları başarısız olursa tüm sınamaları aktarılırsa, yeşil veya kırmızı çubuğu olacaktır.Sınama çalışması genel bir özetini Test Explorer penceresinin alt kısmındaki Ayrıntılar bölmesinde görünür.Alt bölmede, test ayrıntılarını görüntülemek için bir sınama seçin.

Çalıştırdıysanız AddIntegers_FromDataSourceTest yöntemi örneğimizde sonuçları çubuğu kırmızıya ve test yöntemi taşınır Sınamaları başarısız başarısız verilerden iterated yöntemlerden herhangi birini kaynak verilere sınaması başarısız olur.Test Gezgin penceresi içinde bir veri güdümlü sınaması başarısız oldu seçtiğinizde, Ayrıntılar bölmesi veri satır dizini tarafından tanımlanan her yinelemenin sonuçlarını görüntüler.Bizim örneğimizde, göründüğü AddIntegers algoritması negatif değerleri doğru işlemiyor.

Ne zaman altında test yöntemi düzeltilmiş ve yeniden test sonuçları çubuğunu yeşile dönüşür ve test yöntemi taşınır Geçirilen Test grubu.

Ayrıca bkz.

Başvuru

Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute

Microsoft.VisualStudio.TestTools.UnitTesting.TestContext

TestContext.DataRow

Microsoft.VisualStudio.TestTools.UnitTesting.Assert

Kavramlar

Kod birimi sınamaları kullanarak doğrulama

Birim testleri için yazma.net Framework yönetilen kodun Microsoft birim Test çerçevesine

Diğer Kaynaklar

Nasıl yapılır: oluşturun ve birim sınaması çalıştırın

Birim testleri Test Explorer ile çalışan