Udostępnij za pośrednictwem


Klasa DataSourceAttribute

Zawiera informacje specyficzne dla źródła danych do badań opartych na danych.Klasa ta nie może być dziedziczona.

Hierarchia dziedziczenia

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

Przestrzeń nazw:  Microsoft.VisualStudio.TestTools.UnitTesting
Zestaw:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (w Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Składnia

'Deklaracja
<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

Typ DataSourceAttribute uwidacznia następujące elementy członkowskie.

Konstruktorzy

  Nazwa Opis
Metoda publiczna DataSourceAttribute(String) Inicjuje nowe wystąpienie DataSourceAttribute klasy.To wystąpienie zostaną zainicjowane z ciągu połączenia i Dostawca danych skojarzonych z nazwą ustawienie.
Metoda publiczna DataSourceAttribute(String, String) Inicjuje nowe wystąpienie DataSourceAttribute klasy.To wystąpienie zostaną zainicjowane z ciągiem i tabeli Nazwa połączenia.
Metoda publiczna DataSourceAttribute(String, String, String, DataAccessMethod) Inicjuje nowe wystąpienie DataSourceAttribute klasy.To wystąpienie zostaną zainicjowane z dostawcy danych, ciąg połączenia, tabela danych i metody dostępu do danych w celu uzyskania dostępu do źródła danych.

Początek

Właściwości

  Nazwa Opis
Właściwość publiczna ConnectionString Pobiera wartość reprezentująca ciąg połączenia dla źródła danych.
Właściwość publiczna DataAccessMethod Pobiera metoda stosowana do uzyskania dostępu do źródła danych.
Właściwość publiczna DataSourceSettingName Zwraca wartość wskazującą nazwę ustawienia używane do identyfikowania informacje połączenia źródła danych przechowywane w pliku konfiguracyjnym.
Właściwość publiczna ProviderInvariantName Pobiera wartość reprezentująca dostawca danych źródła danych.
Właściwość publiczna TableName Zwraca wartość wskazującą, nazwa tabeli, dostarczając danych.
Właściwość publiczna TypeId Po wdrożeniu w klasie pochodnej pobiera identyfikator unikatowy to Attribute. (Odziedziczone z Attribute).

Początek

Metody

  Nazwa Opis
Metoda publiczna Equals Infrastruktura. Zwraca wartość, która wskazuje, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute).
Metoda publiczna GetHashCode Zwraca kod skrótu dla tego wystąpienia. (Odziedziczone z Attribute).
Metoda publiczna GetType Pobiera Type bieżącego wystąpienia. (Odziedziczone z Object).
Metoda publiczna IsDefaultAttribute Gdy zastąpiony w klasie pochodnej, wskazuje, czy wartość to wystąpienie jest wartością domyślną dla klasy pochodnej. (Odziedziczone z Attribute).
Metoda publiczna Match Gdy zastąpiony w klasie pochodnej, zwraca wartość wskazującą, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute).
Metoda publiczna ToString Zwraca wartość typu ciąg, który reprezentuje bieżący obiekt. (Odziedziczone z Object).

Początek

Pola

  Nazwa Opis
Pole publiczneStatyczny element członkowski DefaultDataAccessMethod Reprezentuje domyślnej metody dostępu danych.To pole jest tylko do odczytu.
Pole publiczneStatyczny element członkowski DefaultProviderName Reprezentuje domyślna nazwa dostawcy danych.To pole jest tylko do odczytu.

Początek

Jawne implementacje interfejsu

  Nazwa Opis
Jawna implementacja interfejsuMetoda prywatna _Attribute.GetIDsOfNames Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłki. (Odziedziczone z Attribute).
Jawna implementacja interfejsuMetoda prywatna _Attribute.GetTypeInfo Pobiera informacje o typie dla obiektu, który można uzyskać informacji o typie dla interfejsu. (Odziedziczone z Attribute).
Jawna implementacja interfejsuMetoda prywatna _Attribute.GetTypeInfoCount Pobiera numer typu informacji interfejsów, że obiekt zawiera (0 lub 1). (Odziedziczone z Attribute).
Jawna implementacja interfejsuMetoda prywatna _Attribute.Invoke Zapewnia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone z Attribute).

Początek

Uwagi

DataSourceAttribute Klasa oferuje dwa sposoby określania danych źródło informacji dla badań opartych na danych.Pierwszy sposób określa informacji za pomocą ciągu połączenia, informacji o dostawcy i nazwa tabeli źródłowej przekazany do DataSourceAttribute.

Przykład ciągu połączenia:

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

Drugi sposób przekazuje pojedynczy argument atrybutu, który określa ustawienie konfiguracji, znajduje się w app.config pliku.

Przykład ustawienia konfiguracji:

[DataSource("dataSourceNameFromConfigFile")]

[!UWAGA]

Inne dane dostawcy używają ciągów połączenia różnych.Nazwa dostawcy jest częścią ciągu połączenia.

Aby uzyskać więcej informacji na temat za pomocą app.config pliku dla określenia źródła danych, zobacz Instruktaż: Użycie pliku konfiguracyjnego, aby zdefiniować źródło danych.

Aby uzyskać więcej informacji na temat badań opartych na danych, zobacz Data-Driven Unit Tests.

Aby uzyskać więcej informacji na temat przy użyciu atrybutów, zobacz Rozszerzanie metadanych za pomocą atrybutów.

Przykłady

Poniższy kod zawiera klasy i metody badania.

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

Następujące badania będą przekazywać.Korzysta z bazy danych access sample.mdb, który zawiera następujące dane w tabeli Tabela1.

Nazwa

Saldo

Kwota

Jorg Bott

100

25

Pedro Ruivo

70

60

Krzysztof Janiszewski

75

71.25

Król Russell

159

158

Jun Cao

11.99

11.22

Należy zauważyć, że DataAccessMethod został ustawiony jako sekwencyjny.

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

Bezpieczeństwo wątku

Wszystkie publiczne static (Shared w języku Visual Basic) elementy członkowskie tego typu są bezpieczne dla wątków. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.

Zobacz też

Informacje

Przestrzeń nazw Microsoft.VisualStudio.TestTools.UnitTesting

DataAccessMethod

Inne zasoby

Porady: tworzenie testu jednostkowego opartego na danych

How to: Configure a Data-Driven Unit Test

Rozszerzanie metadanych za pomocą atrybutów