2012-02-26 1 views
10

MsTest 프레임 워크를 사용하여 데이터 기반 테스트를 구현했습니다.데이터 기반 테스트에서는 TestContext에서 반복/회선 번호를 어떻게 구합니까?

TestContext 객체에서 현재 테스트 코드의 반복/행 번호를 가져 오는 방법이 있는지 궁금합니다.

DDT와 관련된 유일한 속성은 데이터 원본에서 현재 반복에 대한 정보를 가져올 수있는 DataRow이지만 필요한 항목을 제공하는 속성은 표시되지 않습니다.

답변

15

이 시도 :

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

감사 자체를 반복하는 것이 내가 당신을 말할 수있는, 즉 :) 일 – user1039580

+0

디버거를 살펴보고 Inspect를 찾아야합니다. 나는 그것을 충분히 빨리 보지 못했습니다. MSDN은이 유용한 개체 테이블을 언급하지 않습니다. –

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

이 데이터 소스 속성없이이지만 루프의없이 의해

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

     } 
관련 문제