Ответ 1
Попробуйте следующее:
int currentIteration = TestContext.DataRow.Table.Rows.IndexOf(TestContext.DataRow);
Я реализовал проверку данных с использованием платформы MsTest.
Мне было интересно, есть ли способ получить номер итерации/строки текущего тестового кода из объекта TestContext?
Насколько я вижу, единственным свойством DDT является DataRow, который позволяет получать информацию о текущей итерации из источника данных, но я не вижу никакого свойства, которое дает мне то, что мне нужно.
Попробуйте следующее:
int currentIteration = TestContext.DataRow.Table.Rows.IndexOf(TestContext.DataRow);
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);
это без атрибута 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);
}