Aracılığıyla paylaş


DataSourceAttribute Sınıf

Verilere bağlı sınama veri kaynağına özgü bilgiler sağlar. Bu sınıf devralınamaz.

Devralma Hiyerarşisi

System.Object
  System.Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute

Ad alanı:  Microsoft.VisualStudio.TestTools.UnitTesting
Derleme:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll içinde)

Sözdizimi

'Bildirim
<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple := False)> _
Public NotInheritable Class DataSourceAttribute _
    Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)]
public sealed class DataSourceAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, AllowMultiple = false)]
public ref class DataSourceAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)>]
type DataSourceAttribute =  
    class
        inherit Attribute
    end
public final class DataSourceAttribute extends Attribute

DataSourceAttribute türü aşağıdaki üyeleri ortaya koyar.

Oluşturucular

  Ad Açıklama
Genel yöntem DataSourceAttribute(String) Yeni bir örneğini başlatır DataSourceAttribute sınıfaBu örnek ayar adıyla ilişkili bir veri sağlayıcısı ve bağlantı dizesi ile başlatılır.
Genel yöntem DataSourceAttribute(String, String) Yeni bir örneğini başlatır DataSourceAttribute sınıfaBu örnek, bir bağlantı dizesi ve tablo adı ile başlatılır.
Genel yöntem DataSourceAttribute(String, String, String, DataAccessMethod) Yeni bir örneğini başlatır DataSourceAttribute sınıfaBu örnek, bir veri sağlayıcı, bağlantı dizesi, veri tablosu ve veri erişim yöntemi ile veri kaynağına erişmek için başlatılır.

Üst

Özellikler

  Ad Açıklama
Genel özellik ConnectionString Bağlantı dizesi veri kaynağı için gösteren bir değeri alır.
Genel özellik DataAccessMethod Veri kaynağına erişmek için kullanılan yöntemi alır.
Genel özellik DataSourceSettingName Bir yapılandırma dosyasında depolanan veri kaynağı bağlantı bilgilerini tanımlamak için kullanılan ayar adını gösteren bir değeri alır.
Genel özellik ProviderInvariantName Veri sağlayıcısı veri kaynağının gösteren bir değeri alır.
Genel özellik TableName Verileri sağlayan tablo adını gösteren bir değeri alır.
Genel özellik TypeId Türetilmiş bir sınıf içerisinde uygulanan, bunun için bir benzersiz tanımlayıcı alır Attribute. (Attribute kaynağından devralındı.)

Üst

Yöntemler

  Ad Açıklama
Genel yöntem Equals Altyapı. Bu örnek, belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür. (Attribute kaynağından devralındı.)
Korumalı yöntem Finalize Kaynakları boşaltın ve atık toplama işlemi tarafından iadesi önce diğer temizleme işlemleri gerçekleştirmek nesne izin verir. (Object kaynağından devralındı.)
Genel yöntem GetHashCode Bu örnek için karma kodunu döndürür. (Attribute kaynağından devralındı.)
Genel yöntem GetType Alır Type geçerli bir örneği. (Object kaynağından devralındı.)
Genel yöntem IsDefaultAttribute Türetilmiş bir sınıfta geçersiz kılınmış, bu örneğin değeri türetilmiş bir sınıf için varsayılan değer olup olmadığını gösterir. (Attribute kaynağından devralındı.)
Genel yöntem Match Türetilmiş bir sınıfta geçersiz kılınmış, bu örnek belirtilen nesne eşit olup olmadığını gösteren bir değeri döndürür. (Attribute kaynağından devralındı.)
Korumalı yöntem MemberwiseClone Geçerli yüzeysel bir kopyasını oluşturur Object. (Object kaynağından devralındı.)
Genel yöntem ToString Geçerli nesneyi temsil eden bir dize döndürür. (Object kaynağından devralındı.)

Üst

Alanlar

  Ad Açıklama
Genel alanStatik üye DefaultDataAccessMethod Varsayılan veri erişim yöntemi temsil eder.Bu alan salt okunurdur.
Genel alanStatik üye DefaultProviderName Varsayılan veri sağlayıcısını adını temsil eder.Bu alan salt okunurdur.

Üst

Açık Arabirim Uygulamaları

  Ad Açıklama
Açık arabirim uygulamasıÖzel yöntem _Attribute.GetIDsOfNames Adlar kümesi dağıtma tanımlayıcıları karşılık gelen bir dizi eşleştirir. (Attribute kaynağından devralındı.)
Açık arabirim uygulamasıÖzel yöntem _Attribute.GetTypeInfo Bir arabirim türü bilgilerini almak için kullanılan bir nesne türü bilgilerini alır. (Attribute kaynağından devralındı.)
Açık arabirim uygulamasıÖzel yöntem _Attribute.GetTypeInfoCount Bir nesne (0 veya 1) sağlar türü bilgileri arabirimi sayısının alır. (Attribute kaynağından devralındı.)
Açık arabirim uygulamasıÖzel yöntem _Attribute.Invoke Özellikleri ve yöntemleri bir nesnesinin kullandığı erişim sağlar. (Attribute kaynağından devralındı.)

Üst

Açıklamalar

DataSourceAttribute Sınıfı, veri kaynağı bilgilerini veri güdümlü sınamaları belirlemek için iki yol sağlar Birincisi bir bağlantı dizesi sağlayıcı bilgileri aracılığıyla bilgi belirtir ve kaynak tablo adı geçirilen DataSourceAttribute.

Bağlantı dizesi örneği:

[DataSource("Provider=SQLOLEDB.1;Data Source=MySource;Integrated] Security=SSPI;Initial Catalog=MyCatalog;Persist Security Info=False", "MyTable")]

İkinci yolu bulunan yapılandırma ayarı belirtir özniteliği tek bir argüman iletir app.config dosyası.

Yapılandırma ayarını örneği:

[DataSource("dataSourceNameFromConfigFile")]

Not

Farklı veri sağlayıcılar farklı bağlantı dizeleri kullanır. Sağlayıcısının adı, bağlantı dizesini bir parçasıdır.

Kullanma hakkında daha fazla bilgi için app.config dosya veri kaynağını belirtmek için bkz: Walkthrough: veri kaynağı tanımlamak için bir yapılandırma dosyası kullanma.

Veri uygulamalı testleri hakkında daha fazla bilgi için bkz: Overview of Data-Driven Unit Tests.

Öznitelikleri kullanma hakkında daha fazla bilgi için bkz: Extending Metadata Using Attributes.

Örnekler

Sınıf ve test yöntemi şu kodu içerir.

using System;

namespace BankAccountNS
{
    public class BankAccount
    {
        private string custName;
        private double bal;

        public BankAccount(string customerName, double balance)
        {
            custName = customerName;
            bal = balance;
        }

        public double Balance
        { get { return bal; } }

        public void Debit(double amount)
        {
            if (amount < 0)
                throw new ArgumentOutOfRangeException("amount");
            bal -= amount;
        }
    }
}
Imports System

Namespace BankAccountNS
    Public Class BankAccount
        Private customerName As String
        Private bal As Double

        Public Sub New(ByVal customerName2 As String, ByVal balance As Double)
            customerName = customerName2
            bal = balance
        End Sub

        Public ReadOnly Property Balance() As Double
            Get
                Return bal
            End Get
        End Property

        Public Sub Debit(ByVal amount As Double)
            If amount < 0 Then
                Throw New ArgumentOutOfRangeException("amount")
            End If
            bal -= amount
        End Sub
    End Class
End Namespace

Aşağıdaki sınama geçirir. Bu, aşağıdaki verileri tablo1 de içeren sample.mdb access veritabanını kullanır.

Name

Bakiye

Tutar

Jorg Bott

100

25

Pedro Ruivo

70

60

Mandar Samant

75

71.25

Reha King

159

158

Haz Cao

11.99

11.22

Dikkat DataAccessMethod ardışık değil.

using Microsoft.VisualStudio.TestTools.UnitTesting;
using BankAccountNS;
using System;

namespace MyCSTestProject
{
    [TestClass()]
    public class BankAccountTest
    {
        private TestContext testContextInstance;
        public TestContext TestContext
        {
            get { return testContextInstance; }
            set { testContextInstance = value; }
        }

        [TestMethod()]
        [DataSource("System.Data.OleDb",
           "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\sample.mdb\"",
           "Table1",
           DataAccessMethod.Sequential)]
        public void DebitTest()
        {
            string customerName = testContextInstance.DataRow["Name"].ToString();

            double bal = Convert.ToDouble(testContextInstance.DataRow["Balance"]);
            double amt = Convert.ToDouble(testContextInstance.DataRow["Amount"]);

            double newBalance = bal - amt;

            BankAccount target = new BankAccount(customerName, bal);
            target.Debit(amt);

            Assert.AreEqual(newBalance, target.Balance, .00);
        }
    }
}
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports BankAccountNS
Imports System

Namespace TestProject1
    <TestClass()> _
    Public Class BankAccountTest

        Private testContextInstance As TestContext
        Public Property TestContext() As TestContext
            Get
                Return testContextInstance
            End Get
            Set(ByVal Value As TestContext)
                testContextInstance = Value
            End Set
        End Property

        <TestMethod()> _
        <DataSource("System.Data.OleDb", _
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""D:\sample.mdb""", _
        "Table1", DataAccessMethod.Sequential)> _
        Public Sub DebitTest()
            Dim customerName As String = testContextInstance.DataRow("Name").ToString()

            Dim balance As Double = Convert.ToDouble(testContextInstance.DataRow("Balance"))
            Dim amount As Double = Convert.ToDouble(testContextInstance.DataRow("Amount"))

            Dim NewBalance As Double = balance - amount

            Dim target As BankAccount = New BankAccount(customerName, balance)
            target.Debit(amount)

            Assert.AreEqual(NewBalance, target.Balance, 0.0)
        End Sub
    End Class
End Namespace

İş Parçacığı Güvenliği

Bu türün tüm genel statik (Visual Basic'te Shared) üyeleri iş parçacığı açısından güvenlidir. Hiçbir örnek üyesinin iş parçacığı açısından güvenliği garanti edilemez.

Ayrıca bkz.

Başvuru

Microsoft.VisualStudio.TestTools.UnitTesting Ad Alanı

DataAccessMethod

Diğer Kaynaklar

Nasıl Yapılır: Bir veri temelli birim sınaması oluşturmak

How to: Configure a Data-Driven Unit Test

Extending Metadata Using Attributes