我使用MsTest框架实现了数据驱动测试。
我想知道是否有办法从TestContext对象获取当前测试代码的迭代/行号?
据我所知,唯一与DDT相关的属性是DataRow,它可以从数据源获取当前迭代的信息,但我没有看到任何属性可以提供我需要的东西。
答案 0 :(得分:16)
试试这个:
int currentIteration = TestContext.DataRow.Table.Rows.IndexOf(TestContext.DataRow);
答案 1 :(得分:0)
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);
答案 2 :(得分:0)
这是没有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);
}