我使用MsTest框架實現了數據驅動的測試。如何在數據驅動測試中從TestContext獲取迭代/行號?
我想知道是否有方法從TestContext對象獲取當前測試代碼的迭代/行號?
據我所知,唯一與DDT相關的屬性是DataRow,它可以從數據源獲取當前迭代的信息,但我沒有看到任何屬性給我我需要的東西。
我使用MsTest框架實現了數據驅動的測試。如何在數據驅動測試中從TestContext獲取迭代/行號?
我想知道是否有方法從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);
}
謝謝,這工作:) – user1039580 2012-02-26 18:16:18
您必須查看調試器和檢查才能找到。我很快就沒有看到它。 MSDN甚至沒有提到這個有用的對象表。 – 2017-10-17 00:16:53