Sdílet prostřednictvím


DataSourceAttribute – třída

Poskytuje informace o specifické zdroje dat pro datové testování. Od této třídy nelze dědit.

Hierarchie dědičnosti

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

Obor názvů:  Microsoft.VisualStudio.TestTools.UnitTesting
Sestavení:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (v Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Syntaxe

'Deklarace
<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 zveřejňuje následující členy.

Konstruktory

  Název Popis
Veřejná metoda DataSourceAttribute(String) Inicializuje novou instanci DataSourceAttribute TřídaTato instance bude inicializován s dat zprostředkovatele a připojovací řetězec přidružený název nastavení.
Veřejná metoda DataSourceAttribute(String, String) Inicializuje novou instanci DataSourceAttribute TřídaTato instance bude inicializován s názvem tabulky a řetězce připojení.
Veřejná metoda DataSourceAttribute(String, String, String, DataAccessMethod) Inicializuje novou instanci DataSourceAttribute TřídaTato instance bude inicializován pomocí zprostředkovatele dat, připojovací řetězec, tabulku dat a metoda přístupu dat pro přístup ke zdroji dat.

Na začátek

Vlastnosti

  Název Popis
Veřejná vlastnost ConnectionString Získá hodnotu představující připojovací řetězec ke zdroji dat.
Veřejná vlastnost DataAccessMethod Získá metodu pro přístup ke zdroji dat
Veřejná vlastnost DataSourceSettingName Získá hodnotu určující nastavení název používaný k identifikaci informace o připojení zdroje dat uloženy v konfiguračním souboru.
Veřejná vlastnost ProviderInvariantName Získá hodnotu představující zprostředkovatele dat zdroje dat.
Veřejná vlastnost TableName Získá hodnotu určující název tabulky poskytují údaje.
Veřejná vlastnost TypeId Po implementaci v odvozené třídě získává tento jedinečný identifikátor Attribute. (Zděděno z Attribute.)

Na začátek

Metody

  Název Popis
Veřejná metoda Equals Infrastruktura. Vrátí hodnotu, která označuje, zda je zadaný objekt rovna této instance. (Zděděno z Attribute.)
Chráněná metoda Finalize Umožňuje zkuste uvolnit prostředky a provádět další operace vyčištění před je převzaty systémem pro uvolnění objektu. (Zděděno z Object.)
Veřejná metoda GetHashCode Vrátí kód hash pro tuto instanci. (Zděděno z Attribute.)
Veřejná metoda GetType Získává Type aktuální instance. (Zděděno z Object.)
Veřejná metoda IsDefaultAttribute Přepsat v odvozené třídě označuje, zda hodnota této instance je výchozí hodnota pro odvozené třídy. (Zděděno z Attribute.)
Veřejná metoda Match Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda tato instance se rovná zadaný objekt. (Zděděno z Attribute.)
Chráněná metoda MemberwiseClone Vytvoří kopii aktuální Object. (Zděděno z Object.)
Veřejná metoda ToString Vrátí řetězec, který představuje aktuální objekt. (Zděděno z Object.)

Na začátek

Pole

  Název Popis
Veřejné poleStatický člen DefaultDataAccessMethod Představuje výchozí metodu data aplikace access.Toto pole je určeno pouze ke čtení.
Veřejné poleStatický člen DefaultProviderName Představuje výchozí název zprostředkovatele datToto pole je určeno pouze ke čtení.

Na začátek

Explicitní implementace rozhraní

  Název Popis
Explicitní implementace rozhraníSoukromá metoda _Attribute.GetIDsOfNames Mapuje sadu názvů identifikátorů odeslání odpovídající sadu. (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda _Attribute.GetTypeInfo Načte informace o typu objektu, který lze získat informace o rozhraní typu. (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda _Attribute.GetTypeInfoCount Vyhledá číslo rozhraní typu informací, že objekt obsahuje (0 nebo 1). (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda _Attribute.Invoke Poskytuje přístup k vlastnostem a metodám vystaven objekt. (Zděděno z Attribute.)

Na začátek

Poznámky

DataSourceAttribute Třídy nabízí dva způsoby zadání zdroje dat pro datově řízené testy. Prvním způsobem určuje informace prostřednictvím připojovací řetězec zprostředkovatele informací a předán název zdrojové tabulky DataSourceAttribute.

Příklad řetězce připojení:

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

Druhým způsobem předává atribut, který určuje nastavení konfigurace v jediný argument app.config souboru.

Příklad nastavení konfigurace:

[DataSource("dataSourceNameFromConfigFile")]

Poznámka

Pomocí různých poskytovatelů různých připojovací řetězce. Název zprostředkovatele je část řetězce připojení.

Další informace o použití app.config soubor pro určení zdroje dat, viz Walkthrough: Using a Configuration File to Define a Data Source.

Další informace o datové zkoušky viz Overview of Data-Driven Unit Tests.

Další informace o použití atributů viz Rozšíření metadat pomocí atributů.

Příklady

Následující kód obsahuje třídy a metody testování.

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

Následující test předá. Používá databázi sample.mdb obsahuje následující data v Tabulka1.

Název

Zůstatek

Částka

Jorg Bott

100

25

Pedro Ruivo

70

60

Mandar Samant

75

71.25

Rostislav král

159

158

JUN Cao

11.99

11.22

Všimněte si, že DataAccessMethod je sekvenční.

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

Zabezpečení podprocesu

Všechny veřejné členy static (Shared v jazyce Visual Basic) tohoto typu jsou zabezpečeny pro používání podprocesů. Zabezpečení sdílených členů pro používání podprocesů není zaručeno.

Viz také

Odkaz

Microsoft.VisualStudio.TestTools.UnitTesting – obor názvů

DataAccessMethod

Další zdroje

How to: Create a Data-Driven Unit Test

How to: Configure a Data-Driven Unit Test

Rozšíření metadat pomocí atributů