Aracılığıyla paylaş


İzlenecek yol: Veri kaynağı tanımlamak için yapılandırma dosyası kullanma

Bu kılavuzda, birim testi için app.config dosyasında tanımlanan bir veri kaynağının nasıl kullanılacağı gösterilmektedir. Sınıfı tarafından DataSourceAttribute kullanılabilecek bir veri kaynağını tanımlayan bir app.config dosyası oluşturmayı öğreneceksiniz. Bu kılavuzda sunulan görevler şunlardır:

  • App.config dosyası oluşturma.

  • Özel yapılandırma bölümü tanımlama.

  • bağlantı dizesi tanımlama.

  • Veri kaynaklarını tanımlama.

  • sınıfını kullanarak veri kaynaklarına DataSourceAttribute erişme.

Not

DataSourceAttribute şu anda yalnızca .NET Framework'te desteklenmektedir.

Önkoşullar

İzlenecek yolu tamamlamak için şunlara ihtiyaç duyarsınız:

  • Visual Studio Enterprise

  • En az bir test yöntemi için veri sağlamak için Microsoft Access veya Microsoft Excel.

  • Test projesi içeren bir Visual Studio çözümü.

Projeye app.config dosyası ekleme

  1. Test projenizde zaten bir app.config dosyası varsa Özel yapılandırma tanımlama bölümüne gidin.

  2. Çözüm Gezgini'da test projenize sağ tıklayın ve ardından Yeni Öğe Ekle'yi>seçin.

    Yeni Öğe Ekle penceresi açılır. Tüm öğe şablonlarını görmüyorsanız, Tüm Şablonları Göster'i ve ardından öğe şablonunu seçin.

  3. Uygulama Yapılandırma Dosyası şablonunu seçin ve Ekle'ye tıklayın.

Özel yapılandırma bölümü tanımlama

app.config dosyasını inceleyin. En azından XML bildirimini ve kök öğesini içerir.

App.config dosyasına özel yapılandırma bölümünü eklemek için

  1. app.config dosyasının kök öğesi yapılandırma öğesi olmalıdır. Yapılandırma öğesi içinde bir configSections öğesi oluşturun. configSections, app.config dosyasındaki ilk öğe olmalıdır.

  2. configSections öğesinde bir bölüm öğesi oluşturun.

  3. section öğesinde adlı name bir öznitelik ekleyin ve değerine atayınmicrosoft.visualstudio.testtools. adlı type başka bir öznitelik ekleyin ve değerine atayın Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.

Bölüm öğesi şuna benzer görünmelidir:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />

Not

Derleme adı, kullandığınız sürümle eşleşmelidir.

bağlantı dizesi tanımlama

bağlantı dizesi, veri kaynaklarına erişmek için sağlayıcıya özgü bilgileri tanımlar. Yapılandırma dosyalarında tanımlanan Bağlan ion dizeleri, bir uygulama genelinde yeniden kullanılabilir veri sağlayıcısı bilgileri sağlar. Bu bölümde, Özel Yapılandırma Bölümünde tanımlanan veri kaynakları tarafından kullanılacak iki bağlantı dizesi oluşturacaksınız.

bağlantı dizesi tanımlamak için

  1. configSections öğesinden sonra bir connectionStrings öğesi oluşturun.

  2. connectionStrings öğesinde iki ekleme öğesi oluşturun.

  3. İlk add öğesinde, Bir Microsoft Access veritabanına bağlantı için aşağıdaki öznitelikleri ve değerleri oluşturun:

Öznitelik Değerler
name "MyJetConn"
connectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

İkinci add öğesinde, Bir Microsoft Excel elektronik tablosuna bağlantı için aşağıdaki öznitelikleri ve değerleri oluşturun:

Öznitelik Değerler
name "MyExcelConn"
connectionString "Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5"
providerName "System.Data.Odbc"

connectionStrings öğesi şuna benzer görünmelidir:

<connectionStrings>
    <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
    <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>

Veri kaynaklarını tanımlama

Veri kaynakları bölümü, test altyapısı tarafından bir veri kaynağından veri almak için kullanılan dört öznitelik içerir.

  • name tarafından hangi veri kaynağının kullanılacağını belirtmek için kullanılan DataSourceAttribute kimliği tanımlar.

  • connectionStringönceki Bağlan Dizelerini Tanımla bölümünde oluşturulan bağlantı dizesi tanımlar.

  • dataTableName , testte kullanılacak verileri tutan tabloyu veya sayfayı tanımlar.

  • dataAccessMethod veri kaynağındaki veri değerlerine erişme tekniğini tanımlar.

Bu bölümde, birim testinde kullanılacak iki veri kaynağı tanımlayacaksınız.

Veri kaynaklarını tanımlamak için

  1. connectionStrings öğesinden sonra bir microsoft.visualstudio.testtools öğesi oluşturun. Bu bölüm Özel Yapılandırma Tanımlama Bölümünde oluşturulmuştur.

  2. microsoft.visualstudio.testtools öğesinde bir dataSources öğesi oluşturun.

  3. dataSources öğesinde iki ekleme öğesi oluşturun.

  4. İlk add öğesinde, bir Microsoft Access veri kaynağı için aşağıdaki öznitelikleri ve değerleri oluşturun:

Öznitelik Değerler
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

İkinci add öğesinde, bir Microsoft Excel veri kaynağı için aşağıdaki öznitelikleri ve değerleri oluşturun:

Öznitelik Değerler
Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

microsoft.visualstudio.testtools öğesi şuna benzer olmalıdır:

<microsoft.visualstudio.testtools>
    <dataSources>
        <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
        <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
    </dataSources>
</microsoft.visualstudio.testtools>

Son app.config dosyası şuna benzer olmalıdır:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
    </configSections>
    <connectionStrings>
        <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
        <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
    </connectionStrings>
    <microsoft.visualstudio.testtools>
        <dataSources>
            <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
            <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
        </dataSources>
    </microsoft.visualstudio.testtools>
</configuration>

app.config içinde tanımlanan veri kaynaklarını kullanan bir birim testi oluşturma

Bir app.config dosyası tanımlandığına göre, app.config dosyasında tanımlanan veri kaynaklarında bulunan verileri kullanan bir birim testi oluşturacaksınız. Bu bölümde şunları yapacağız:

  • app.config dosyasında bulunan veri kaynaklarını oluşturun.

  • Her veri kaynağındaki değerleri karşılaştıran iki test yönteminde veri kaynaklarını kullanın.

Microsoft Access veri kaynağı oluşturmak için

  1. testdatasource.accdb adlı bir Microsoft Access veritabanı oluşturun.

  2. Bir tablo oluşturun ve bunu testdatasource.accdb dosyasında adlandırabilirsiniz.MyDataTable

  3. adlı Arg1 ve Arg2 veri türünü kullanarak Number içinde iki alan MyDataTable oluşturun.

  4. ve için Arg1Arg2sırasıyla şu değerlerle beş varlık MyDataTable ekleyin: (10,50), (3,2), (6,0), (0,8) ve (12312.1000).

  5. Veritabanını kaydedin ve kapatın.

  6. veritabanının konumuna işaret etmek için bağlantı dizesi değiştirin. değerini Data Source veritabanının konumunu yansıtacak şekilde değiştirin.

Microsoft Excel veri kaynağı oluşturmak için

  1. data.xlsx adlı bir Microsoft Excel elektronik tablosu oluşturun.

  2. data.xlsx içinde zaten yoksa adlı Sheet1 bir sayfa oluşturun.

  3. İki sütun üst bilgisi oluşturup bunları Val1 ve Val2 içinde olarak adlandır.Sheet1

  4. ve için Val1Val2sırasıyla şu değerlerle beş varlık Sheet1 ekleyin: (1,1), (2,2), (3,3), (4,4) ve (5,0).

  5. Elektronik tabloyu kaydedin ve kapatın.

  6. bağlantı dizesi elektronik tablonun konumunu işaret eden şekilde değiştirin. değerini dbq elektronik tablonun konumunu yansıtacak şekilde değiştirin.

app.config veri kaynaklarını kullanarak birim testi oluşturmak için

  1. Test projesine birim testi ekleyin.

  2. Birim testinin otomatik olarak oluşturulan içeriğini aşağıdaki kodla değiştirin:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace TestProject1
    {
         [TestClass]
        public class UnitTest1
        {
            private TestContext context;
    
            public TestContext TestContext
            {
                get { return context; }
                set { context = value; }
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\testdatasource.accdb")]
            [DataSource("MyJetDataSource")]
            public void MyTestMethod()
            {
                int a = Int32.Parse(context.DataRow["Arg1"].ToString());
                int b = Int32.Parse(context.DataRow["Arg2"].ToString());
                Assert.AreNotEqual(a, b, "A value was equal.");
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\data.xlsx")]
            [DataSource("MyExcelDataSource")]
            public void MyTestMethod2()
            {
                Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]);
            }
        }
    }
    
  3. DataSource özniteliklerini inceleyin. app.config dosyasındaki ayar adlara dikkat edin.

  4. Çözümünüzü derleyin ve MyTestMethod ve MyTestMethod2 testlerini çalıştırın.

Önemli

Dağıtım dizinindeki test için erişilebilir olmaları için veri kaynakları gibi öğeleri dağıtın.