2012-02-26 17 views
10

Tôi đã triển khai thử nghiệm theo hướng dữ liệu bằng cách sử dụng khung công tác MsTest.Làm cách nào để bạn nhận được số thứ tự/số dòng từ TestContext trong các kiểm tra định hướng dữ liệu?

Tôi đã tự hỏi nếu có một cách để có được số lặp/dòng của mã kiểm tra hiện tại từ đối tượng TestContext? Theo như tôi có thể thấy, thuộc tính duy nhất liên quan đến DDT là DataRow cho phép nhận thông tin cho lần lặp hiện tại từ nguồn dữ liệu, nhưng tôi không thấy bất kỳ thuộc tính nào cung cấp cho tôi những gì tôi cần.

Trả lời

15

Hãy thử điều này:

int currentIteration = TestContext.DataRow.Table.Rows.IndexOf(TestContext.DataRow); 
+2

Cảm ơn, mà làm việc :) – user1039580

+0

Bạn phải xem Debugger và Inspect để tìm ra điều này. Tôi không thấy nó đủ sớm. MSDN thậm chí không đề cập đến bảng đối tượng hữu ích này. –

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); 
0

này là không có thuộc tính DataSource nhưng tôi có thể nói với bạn rằng nó lặp bởi nó tự mà không có sự cho vòng lặp

 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); 

     } 
Các vấn đề liên quan