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 | |
---|---|---|
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. | |
DataSourceAttribute(String, String) | Inicjuje nowe wystąpienie DataSourceAttribute klasy.To wystąpienie zostaną zainicjowane z ciągiem i tabeli Nazwa połączenia. | |
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 | |
---|---|---|
ConnectionString | Pobiera wartość reprezentująca ciąg połączenia dla źródła danych. | |
DataAccessMethod | Pobiera metoda stosowana do uzyskania dostępu do źródła danych. | |
DataSourceSettingName | Zwraca wartość wskazującą nazwę ustawienia używane do identyfikowania informacje połączenia źródła danych przechowywane w pliku konfiguracyjnym. | |
ProviderInvariantName | Pobiera wartość reprezentująca dostawca danych źródła danych. | |
TableName | Zwraca wartość wskazującą, nazwa tabeli, dostarczając danych. | |
TypeId | Po wdrożeniu w klasie pochodnej pobiera identyfikator unikatowy to Attribute. (Odziedziczone z Attribute). |
Początek
Metody
Nazwa | Opis | |
---|---|---|
Equals | Infrastruktura. Zwraca wartość, która wskazuje, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute). | |
GetHashCode | Zwraca kod skrótu dla tego wystąpienia. (Odziedziczone z Attribute). | |
GetType | Pobiera Type bieżącego wystąpienia. (Odziedziczone z Object). | |
IsDefaultAttribute | Gdy zastąpiony w klasie pochodnej, wskazuje, czy wartość to wystąpienie jest wartością domyślną dla klasy pochodnej. (Odziedziczone z Attribute). | |
Match | Gdy zastąpiony w klasie pochodnej, zwraca wartość wskazującą, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute). | |
ToString | Zwraca wartość typu ciąg, który reprezentuje bieżący obiekt. (Odziedziczone z Object). |
Początek
Pola
Nazwa | Opis | |
---|---|---|
DefaultDataAccessMethod | Reprezentuje domyślnej metody dostępu danych.To pole jest tylko do odczytu. | |
DefaultProviderName | Reprezentuje domyślna nazwa dostawcy danych.To pole jest tylko do odczytu. |
Początek
Jawne implementacje interfejsu
Nazwa | Opis | |
---|---|---|
_Attribute.GetIDsOfNames | Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłki. (Odziedziczone z Attribute). | |
_Attribute.GetTypeInfo | Pobiera informacje o typie dla obiektu, który można uzyskać informacji o typie dla interfejsu. (Odziedziczone z Attribute). | |
_Attribute.GetTypeInfoCount | Pobiera numer typu informacji interfejsów, że obiekt zawiera (0 lub 1). (Odziedziczone z Attribute). | |
_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
Inne zasoby
Porady: tworzenie testu jednostkowego opartego na danych