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
Значение свойства
Тип: DataRow
Объект DataRow.
Заметки
Свойство DataRow возвращает значения текущей строки по столбцам. Таким образом будут возвращаться данные, идентифицируемые по столбцу. Столбец идентифицируется по имени, как показано в следующем примере, или по индексу. В демонстрационной таблице данных, показанной в следующем примере, индексный идентификатор DataRow[0] будет возвращать значение столбца Name из таблицы Table1.
Примеры
Следующий код содержит тестируемые класс и метод.
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
Пройдет следующий тест. Он использует демонстрационную базу данных Access sample.mdb, содержащую таблицу Table1 со следующими данными.
Name |
Balance |
Amount |
---|---|---|
Becky |
100 |
25 |
Джон |
70 |
60 |
Larry |
75 |
71.25 |
Stephanie |
159 |
158 |
Мр. 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
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Для получения дополнительной информации см. Использование библиотек из не вполне надежного кода.
См. также
Ссылки
Microsoft.VisualStudio.TestTools.UnitTesting - пространство имен
Другие ресурсы
Практическое руководство. Создание модульного теста, управляемого данными