Comment obtenir le numéro d'itération / ligne de TestContext dans les tests pilotés par les données?
-
13-11-2019 - |
Question
J'ai implémenté un test basé sur les données à l'aide de MSTEST Framework.
Je me demandais s'il y avait un moyen d'obtenir le numéro d'itération / ligne du code de test actuel de l'objet TestContext?
Pour autant que je puisse voir, la seule propriété pertinente pour DDT est Datarow qui permet d'obtenir des informations pour l'itération actuelle de la source de données, mais je ne vois aucune propriété qui me donne ce dont j'ai besoin.
La solution
Essaye ça:
int currentIteration = TestContext.DataRow.Table.Rows.IndexOf(TestContext.DataRow);
Autres conseils
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);
C'est sans l'attribut de source de données mais je peux vous dire qu'il se rendra par lui-même sans la boucle pour
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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow