Aracılığıyla paylaş


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

Bu kılavuzda, birim testi için bir app.config dosyasında tanımlanan veri kaynağının nasıl kullanılacağı gösterilmektedir. sınıfı tarafından kullanılabilecek bir veri kaynağını tanımlayan bir DataSourceAttribute 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ı dizelerini tanımlama.

  • Veri kaynaklarını tanımlama.

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

Not

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

Önkoşullar

Bu kılavuzu tamamlamak için şunlar gerekir:

  • Visual Studio Enterprise

  • Test yöntemlerinden en az biri için veri sağlamak amacıyla Microsoft Access veya Microsoft Excel kullanılır.

  • 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'nde test projenize sağ tıklayın ve ardından Ekle>Yeni Öğeseçin.

    Yeni Öğe Ekle penceresi açılır. Tüm öğe şablonlarını görmüyorsanız, Tüm Şablonları Gösteröğesini 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.

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

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

  2. configSections öğesi içinde, bir bölüm öğesi oluşturun.

  3. bölümünde, öğesinde name adlı bir öznitelik ekleyin ve ona microsoft.visualstudio.testtoolsdeğerini atayın. type adlı başka bir öznitelik ekleyin ve Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensionsdeğerini atayın.

bölümü öğesi şuna benzer olmalıdır:

<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ı dizelerini tanımlama

Bağlantı dizeleri, veri kaynaklarına erişmek için sağlayıcıya özgü bilgileri tanımlar. Yapılandırma dosyalarında tanımlanan bağlantı 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.

Dikkat

Bağlantı dizesi hassas veriler (örneğin, parola) içerebilir. Bağlantı dizesi, kaynak kodda ve derlenmiş derlemede düz metin olarak depolanır. Bu hassas bilgileri korumak için kaynak koduna ve derlemeye erişimi kısıtlayın.

Bağlantı dizelerini tanımlamak için

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

  2. connectionStrings öğesinde iki öğesi ekleyin.

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

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

Microsoft Excel tablosuna bağlantı için ikinci öğesini ekleyin ve aşağıdaki öznitelikleri ve değerleri oluşturun.

Öznitelik Değer
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, hangi veri kaynağının kullanılacağını belirtmek için DataSourceAttribute tarafından kullanılan kimliği tanımlar.

  • connectionString, önceki Bağlantı Dizelerini Tanımla bölümünde oluşturulan bağlantı dizesini 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 öğesi ekleyin.

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

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

İkinci öğesine öğesini ekleyin ve bir Microsoft Excel veri kaynağı için aşağıdaki nitelikleri ve değerleri oluşturun:

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

microsoft.visualstudio.testtools öğesi şuna benzer görünmelidir:

<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'de tanımlanan veri kaynaklarını kullanan bir birim testi oluşturma

Artık 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.accdbadlı bir Microsoft Access veritabanı oluşturun.

  2. bir tablo oluşturun ve MyDataTableiçinde olarak adlandırabilirsiniz.

  3. MyDataTable veri türünü kullanarak Arg1Arg2 adlı ve Number adlı iki alan oluşturun.

  4. MyDataTable'ye, Arg1 ve Arg2için sırasıyla şu değerlerle beş varlık ekleyin: (10,50), (3,2), (6,0), (0,8) ve (12312,1000).

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

  6. Bağlantı dizesini veritabanının konumuna işaret eden şekilde değiştirin. Data Source değerini veritabanının konumunu yansıtacak şekilde değiştirin.

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

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

  2. Eğer Sheet1içinde adlı bir sayfa zaten yoksa, bir sayfa oluşturun.

  3. İki sütun üst bilgisi oluşturun ve bunları Val1 ve Val2'de Sheet1 olarak adlandırnın.

  4. Sheet1'a, Val1 ve Val2için sırasıyla aşağıdaki değerlerle beş varlık ekleyin: (1,1), (2,2), (3,3), (4,4) ve (5,0).

  5. Elektronik tabloyu kaydedin ve kapatın.

  6. Bağlantı dizesini elektronik tablonun konumunu işaret eden şekilde değiştirin. dbq değerini 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.