İ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
Test projenizde zaten bir app.config dosyası varsa Özel yapılandırma tanımlama bölümüne gidin.
Çö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.
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
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.
configSections öğesinde bir bölüm öğesi oluşturun.
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ınMicrosoft.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
configSections öğesinden sonra bir connectionStrings öğesi oluşturun.
connectionStrings öğesinde iki ekleme öğesi oluşturun.
İ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
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.
microsoft.visualstudio.testtools öğesinde bir dataSources öğesi oluşturun.
dataSources öğesinde iki ekleme öğesi oluşturun.
İ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
testdatasource.accdb adlı bir Microsoft Access veritabanı oluşturun.
Bir tablo oluşturun ve bunu testdatasource.accdb dosyasında adlandırabilirsiniz.
MyDataTable
adlı
Arg1
veArg2
veri türünü kullanarakNumber
içinde iki alanMyDataTable
oluşturun.ve için
Arg1
Arg2
sırasıyla şu değerlerle beş varlıkMyDataTable
ekleyin: (10,50), (3,2), (6,0), (0,8) ve (12312.1000).Veritabanını kaydedin ve kapatın.
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
data.xlsx adlı bir Microsoft Excel elektronik tablosu oluşturun.
data.xlsx içinde zaten yoksa adlı
Sheet1
bir sayfa oluşturun.İki sütun üst bilgisi oluşturup bunları
Val1
veVal2
içinde olarak adlandır.Sheet1
ve için
Val1
Val2
sırasıyla şu değerlerle beş varlıkSheet1
ekleyin: (1,1), (2,2), (3,3), (4,4) ve (5,0).Elektronik tabloyu kaydedin ve kapatın.
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
Test projesine birim testi ekleyin.
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"]); } } }
DataSource özniteliklerini inceleyin. app.config dosyasındaki ayar adlara dikkat edin.
Çö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.