DataSourceAttribute クラス
データ ドリブン テストにデータ ソース固有の情報を提供します。 このクラスは継承できません。
継承階層
System.Object
System.Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute
名前空間: Microsoft.VisualStudio.TestTools.UnitTesting
アセンブリ: Microsoft.VisualStudio.QualityTools.UnitTestFramework (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 内)
構文
'宣言
<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
DataSourceAttribute 型で公開されるメンバーは以下のとおりです。
コンストラクター
名前 | 説明 | |
---|---|---|
DataSourceAttribute(String) | DataSourceAttribute クラスの新しいインスタンスを初期化します。このインスタンスは、設定名に関連付けられているデータ プロバイダーと接続文字列で初期化されます。 | |
DataSourceAttribute(String, String) | DataSourceAttribute クラスの新しいインスタンスを初期化します。このインスタンスは、接続文字列とテーブル名で初期化されます。 | |
DataSourceAttribute(String, String, String, DataAccessMethod) | DataSourceAttribute クラスの新しいインスタンスを初期化します。このインスタンスは、データ ソースにアクセスするために、データ プロバイダー、接続文字列、データ テーブル、およびデータ アクセス メソッドで初期化されます。 |
このページのトップへ
プロパティ
名前 | 説明 | |
---|---|---|
ConnectionString | データ ソースへの接続文字列を表す値を取得します。 | |
DataAccessMethod | データ ソースにアクセスするために使用するメソッドを取得します。 | |
DataSourceSettingName | 構成ファイルに格納されているデータ ソース接続情報の識別に使用する設定名を示す値を取得します。 | |
ProviderInvariantName | データ ソースのデータ プロバイダーを表す値を取得します。 | |
TableName | データを提供するテーブル名を示す値を取得します。 | |
TypeId | 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。 (Attribute から継承されます。) |
このページのトップへ
メソッド
名前 | 説明 | |
---|---|---|
Equals | インフラストラクチャ。 このインスタンスが、指定したオブジェクトに等しいかどうかを示す値を返します。 (Attribute から継承されます。) | |
Finalize | オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) | |
GetHashCode | 対象のインスタンスのハッシュ コードを返します。 (Attribute から継承されます。) | |
GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) | |
IsDefaultAttribute | 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 (Attribute から継承されます。) | |
Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) | |
ToString | 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。) |
このページのトップへ
フィールド
名前 | 説明 | |
---|---|---|
DefaultDataAccessMethod | 既定のデータ アクセス メソッドを表します。このフィールドは読み取り専用です。 | |
DefaultProviderName | 既定のデータ プロバイダー名を表します。このフィールドは読み取り専用です。 |
このページのトップへ
明示的インターフェイスの実装
名前 | 説明 | |
---|---|---|
_Attribute.GetIDsOfNames | 名前のセットを対応するディスパッチ識別子のセットにマッピングします。 (Attribute から継承されます。) | |
_Attribute.GetTypeInfo | オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。 (Attribute から継承されます。) | |
_Attribute.GetTypeInfoCount | オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。 (Attribute から継承されます。) | |
_Attribute.Invoke | オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。 (Attribute から継承されます。) |
このページのトップへ
解説
DataSourceAttribute クラスは、データ ドリブン テストのデータ ソース情報を指定するための 2 つの方法を提供します。 1 つ目は、DataSourceAttribute 属性に渡される接続文字列、プロバイダー情報、およびソース テーブル名により情報を指定する方法です。
接続文字列の例を次に示します。
[DataSource("Provider=SQLOLEDB.1;Data Source=MySource;Integrated] Security=SSPI;Initial Catalog=MyCatalog;Persist Security Info=False", "MyTable")]
2 つ目は、app.config ファイル内の構成設定を指定する属性に単一の引数を渡す方法です。
構成設定の例 :
[DataSource("dataSourceNameFromConfigFile")]
注意
データ プロバイダーごとに使用する接続文字列が異なります。 接続文字列の一部であるプロバイダーの名前。
app.config ファイルでのデータ ソースの指定の詳細については、「チュートリアル : データ ソースを定義するための構成ファイルの使用」を参照してください。
データ ドリブン テストの詳細については、「Overview of Data-Driven Unit Tests」を参照してください。
属性の使用方法の詳細については、「属性を使用したメタデータの拡張」を参照してください。
例
次のコードには、テスト対象のクラスとメソッドが含まれます。
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
次のテストは合格します。 このテストでは、Table1 の次のデータを含む sample.mdb アクセス データベースを使用します。
名前 |
Balance |
金額 |
---|---|---|
Jorg Bott |
100 |
25 |
Pedro Ruivo |
70 |
60 |
Mandar Samant |
75 |
71.25 |
Russell King |
159 |
158 |
Jun Cao |
11.99 |
11.22 |
DataAccessMethod はシーケンシャルです。
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
スレッド セーフ
この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
参照
参照
Microsoft.VisualStudio.TestTools.UnitTesting 名前空間