Come si ottiene il numero di iterazione / riga da TestContext nei test guidati dai dati?

StackOverflow https://stackoverflow.com/questions/9454904

  •  13-11-2019
  •  | 
  •  

Domanda

Ho implementato un test basato sui dati utilizzando MSTEST Framework.

Mi chiedevo se ci fosse un modo per ottenere il numero di iterazione / riga del codice di prova corrente dall'oggetto TestContext?

Per quanto posso vedere, l'unica proprietà rilevante per DDT è Datarow che consente di ottenere informazioni per l'iterazione corrente dall'origine dati, ma non vedo alcuna proprietà che mi dia ciò di cui ho bisogno.

È stato utile?

Soluzione

Prova questo:

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

Altri suggerimenti

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

Questo è senza l'attributo DataSource, ma posso dirti che è iterato da sé senza il ciclo

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

        }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top