Как вы получаете номер итерации / строки из TestContext в тестах, управляемых данными? - PullRequest
11 голосов
/ 26 февраля 2012

Я реализовал управляемый данными тест с использованием инфраструктуры MsTest.

Мне было интересно, есть ли способ получить номер итерации / строки текущего тестового кода из объекта TestContext?

Насколько я вижу, единственным свойством, относящимся к DDT, является DataRow, который позволяет получать информацию о текущей итерации из источника данных, но я не вижу ни одного свойства, которое дает мне то, что мне нужно.

Ответы [ 3 ]

16 голосов
/ 26 февраля 2012

Попробуйте это:

int currentIteration = TestContext.DataRow.Table.Rows.IndexOf(TestContext.DataRow);
0 голосов
/ 17 ноября 2013

это без атрибута DataSource, но я могу вам сказать, что оно само выполняет итерацию без цикла for

     for (int i = 0; i < x; i++)
        {
             int currentIteration = TestContext.DataRow.Table.Rows.IndexOf(TestContext.DataRow);
             DataTable dt = TestContext.DataRow.Table;
             int rowCount = dt.Rows.Count;

             DataRow secondRow = dt.Rows[i];
             string name = secondRow["name"].ToString();
             int Balance = Convert.ToInt32(secondRow["Balance"]);
             int Amount = Convert.ToInt32(secondRow["Amount"]);
             int Count = Convert.ToInt32(secondRow["Count"]);
             Assert.AreEqual(Balance, Amount);

        }
0 голосов
/ 27 февраля 2012
private readonly PropertyInfo _rowIdProp = typeof(System.Data.DataRow).GetProperty("rowID", BindingFlags.NonPublic | BindingFlags.GetProperty | BindingFlags.Instance);

..

// No datarow means only one iteraton

var currentIteration = DataRow == null ? 1 : (Int64)_rowIdProp.GetValue(DataRow, null);
...