次の方法で共有


TestContext.DataRow プロパティ

派生クラスでオーバーライドされた場合、テストがデータ ドリブン テストに使用されているときに現在のデータ行を取得します。

名前空間:  Microsoft.VisualStudio.TestTools.UnitTesting
アセンブリ:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 内)

構文

'宣言
Public MustOverride ReadOnly Property DataRow As DataRow
public abstract DataRow DataRow { get; }
public:
virtual property DataRow^ DataRow {
    DataRow^ get () abstract;
}
abstract DataRow : DataRow with get
abstract function get DataRow () : DataRow

プロパティ値

型 : System.Data.DataRow
DataRow オブジェクト。

解説

DataRow プロパティは、現在の行の値を列ごとに返します。これによって、列によって識別されるデータが返されます。列は、下の例のように名前で識別されるか、またはインデックス位置で識別されます。下の例に示すサンプル データ テーブルでは、DataRow[0] のインデックス ID は Table1 の Name 列の値を返します。

次のコードには、テスト対象のクラスとメソッドが含まれます。

using System;

namespace BankAccountNS
{
   public class BankAccount
   {
      private string m_customerName;
      private double m_balance;

      public BankAccount(string customerName, double balance)
      {
         m_customerName = customerName;
         m_balance = balance;
      }

      public double Balance
      { get { return m_balance; } }

      public void Debit(double amount)
      {
         if (amount < 0)
            throw new ArgumentOutOfRangeException("amount");
         m_balance -= amount;
      }
   }
}
Imports System

Namespace BankAccountNS
   Public Class BankAccount
      Private m_customerName As String
      Private m_balance As Double

      Public Sub New(ByVal customerName As String, ByVal balance As Double)
         m_customerName = customerName
         m_balance = balance
      End Sub

      Public ReadOnly Property Balance() As Double
         Get
            Return m_balance
         End Get
      End Property

        Public Sub Debit(ByVal amount As Double)
            If amount < 0 Then
                Throw New ArgumentOutOfRangeException("amount")
            End If
            m_balance -= amount
        End Sub
    End Class
End Namespace

次のテストは合格します。このテストでは、次のデータを持つ Table1 を含む sample.mdb アクセス データベースを使用します。

名前

Balance

金額

Becky

100

25

John

70

60

Larry

75

71.25

Stephanie

159

158

Mr.Bryan Walton

11.99

11.22

using Microsoft.VisualStudio.TestTools.UnitTesting;
using BankAccountNS;
using System;

namespace TestProject1
{
   [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=\"D:\\sample.mdb\"",
         "Table1",
         DataAccessMethod.Sequential)]
      public void DebitTest()
      {
         string customerName = testContextInstance.DataRow["Name"].ToString();

         double balance = Convert.ToDouble(testContextInstance.DataRow["Balance"]);
         double amount = Convert.ToDouble(testContextInstance.DataRow["Amount"]); 

         double newBalance = balance - amount;

         BankAccount target = new BankAccount(customerName, balance);
         target.Debit(amount);

         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

.NET Framework セキュリティ

  • 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

関連項目

TestContext クラス

Microsoft.VisualStudio.TestTools.UnitTesting 名前空間

その他の技術情報

方法: データ ドリブン単体テストを作成する

How to: Configure a Data-Driven Unit Test

Using the TestContext Class