Comment obtenir le numéro d'itération / ligne de TestContext dans les tests pilotés par les données?

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

  •  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.

Était-ce utile?

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
scroll top