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 | |
---|---|---|
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í. | |
DataSourceAttribute(String, String) | Inicializuje novou instanci DataSourceAttribute TřídaTato instance bude inicializován s názvem tabulky a řetězce připojení. | |
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 | |
---|---|---|
ConnectionString | Získá hodnotu představující připojovací řetězec ke zdroji dat. | |
DataAccessMethod | Získá metodu pro přístup ke zdroji dat | |
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. | |
ProviderInvariantName | Získá hodnotu představující zprostředkovatele dat zdroje dat. | |
TableName | Získá hodnotu určující název tabulky poskytují údaje. | |
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 | |
---|---|---|
Equals | Infrastruktura. Vrátí hodnotu, která označuje, zda je zadaný objekt rovna této instance. (Zděděno z Attribute.) | |
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.) | |
GetHashCode | Vrátí kód hash pro tuto instanci. (Zděděno z Attribute.) | |
GetType | Získává Type aktuální instance. (Zděděno z Object.) | |
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.) | |
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.) | |
MemberwiseClone | Vytvoří kopii aktuální Object. (Zděděno z Object.) | |
ToString | Vrátí řetězec, který představuje aktuální objekt. (Zděděno z Object.) |
Na začátek
Pole
Název | Popis | |
---|---|---|
DefaultDataAccessMethod | Představuje výchozí metodu data aplikace access.Toto pole je určeno pouze ke čtení. | |
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 | |
---|---|---|
_Attribute.GetIDsOfNames | Mapuje sadu názvů identifikátorů odeslání odpovídající sadu. (Zděděno z Attribute.) | |
_Attribute.GetTypeInfo | Načte informace o typu objektu, který lze získat informace o rozhraní typu. (Zděděno z Attribute.) | |
_Attribute.GetTypeInfoCount | Vyhledá číslo rozhraní typu informací, že objekt obsahuje (0 nebo 1). (Zděděno z Attribute.) | |
_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ů
Další zdroje
How to: Create a Data-Driven Unit Test