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

Object
  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 klasy DataSourceAttribute. 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 klasy DataSourceAttribute.To wystąpienie zostaną zainicjowane z nazwą połączenia ciąg i tabeli.
Metoda publiczna DataSourceAttribute(String, String, String, DataAccessMethod) Inicjuje nowe wystąpienie klasy DataSourceAttribute. To wystąpienie zostaną zainicjowane z dostawcy danych, ciąg połączenia, tabela danych i metody dostępu do uzyskiwania dostępu do źródła danych.

Początek

Właściwości

  Nazwa Opis
Właściwość publiczna ConnectionString Pobiera wartość reprezentującą ciąg połączenia dla źródła danych.
Właściwość publiczna DataAccessMethod Pobiera metoda używana do uzyskiwania dostępu do źródła danych.
Właściwość publiczna DataSourceSettingName Pobiera wartość wskazującą nazwę ustawienia używane do identyfikowania informacje o połączeniu źródła danych przechowywanych w pliku konfiguracyjnym.
Właściwość publiczna ProviderInvariantName Pobiera wartość reprezentującą dostawcę danych w źródle danych.
Właściwość publiczna TableName Pobiera wartość wskazującą nazwę tabeli dostarczania danych.
Właściwość publiczna TypeId Po wdrożeniu w klasie pochodnej, pobiera identyfikator unikatowy dla tego Attribute. (Odziedziczone z Attribute).

Początek

Metody

  Nazwa Opis
Metoda publiczna Equals Infrastruktura. Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone z Attribute).
Metoda publiczna GetHashCode Zwraca kod skrótu dla tego wystąpienia. (Odziedziczone z Attribute).
Metoda publiczna GetType Gets the Type of the current instance. (Odziedziczone z Object).
Metoda publiczna IsDefaultAttribute Po zastąpieniu w klasie pochodnej, wskazuje, czy wartość to wystąpienie jest wartością domyślną dla klasy pochodnej. (Odziedziczone z Attribute).
Metoda publiczna Match Po zastąpieniu w klasie pochodnej, zwraca wartość wskazującą, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute).
Metoda publiczna ToString Returns a string that represents the current object. (Odziedziczone z Object).

Początek

Pola

  Nazwa Opis
Pole publiczneStatyczny element członkowski DefaultDataAccessMethod Reprezentuje domyślnej metody dostępu do 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 System#Runtime#InteropServices#_Attribute#GetIDsOfNames Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone z Attribute).
Jawna implementacja interfejsuMetoda prywatna System#Runtime#InteropServices#_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 System#Runtime#InteropServices#_Attribute#GetTypeInfoCount Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone z Attribute).
Jawna implementacja interfejsuMetoda prywatna System#Runtime#InteropServices#_Attribute#Invoke Umożliwia 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ła informacji do badań opartych na danych. Pierwszy sposób określa informacje za pomocą ciągu połączenia, informacji o dostawcy i nazwa tabeli źródłowej przekazane do DataSourceAttribute.

Przykład ciąg połączenia:

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

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

Przykład ustawienia konfiguracji:

[DataSource("dataSourceNameFromConfigFile")]

[!UWAGA]

Inne dane dostawcy używają innymi ciągami połączenia.Nazwa dostawcy jest częścią ciągu połączenia.

Aby uzyskać więcej informacji na temat korzystania z app.config plik do określania źródła danych, zobacz Wskazówki: korzystanie z pliku konfiguracji do określania źródła danych.

Aby uzyskać więcej informacji na temat testów opartych na danych, zobacz Data-Driven Unit Tests.

Aby uzyskać więcej informacji dotyczących używania atrybutów, zobacz Rozszerzanie metadanych za pomocą atrybutów.

Przykłady

Poniższy kod zawiera klasy i metoda 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

Przechodzi kolejny test.Używa sample.mdb bazę danych programu access 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

Cao na cze

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