2009-04-07 7 views
1
public DataSet ExampleMethod(int param1, string param2, Hashtable ht) 
    { 

    if(ht==null) 
    { 
     ht = new Hashtable(); 
    } 
    ht.Add("testKey","testData"); 


    DataSet ds = new DataSet(); 
    ds.Tables.Add(); 
    ds.Tables[0].Columns.Add("Column1"); 
    ds.Tables[0].Columns.Add("Column2"); 
    ds.Tables[0].Columns.Add("Column3"); 
    return ds ; 


    } 

c'est juste un exemple de méthode maintenant puisque j'ai une chaîne, un int et un type de table de hachage comme entrée, je peux transmettre des valeurs aléatoires pour int et string, mais Quel type de valeur vais-je passer pour le type de table de hachage afin de tester cette méthode par unité. et je veux aussi un exemple de code Nunit Fixture pour cette méthode afin que je puisse le tester dans le framework Nunit .since ma méthode retourne un ensemble de données comment puis-je écrire un dispositif de texte car j'utilise AREequals (5, add (2,3)) si elle retourne un int .so quoi faire pour une méthode quand elle retourne un DatasetDans les tests unitaires comment passer d'entrée pour la table de hachage

+0

Est-ce que cela répond à votre question? –

Répondre

0

Vous pouvez créer une Hashtable dans le TestMethod ou le TestFixture avec des données factices et passer cet objet. Est-ce que je vous comprends bien?

Dans la méthode [SetUp], vous remplissez votre Hashtable avec des données factices.

Hashtable ht = new Hashtable(); 

[SetUp] 
public void SetUp() 
{ 
    ht.Add("key1", "value1"); 
    ht.Add("key2", "value2"); 
    ht.Add("key3", "value3"); 
} 

Je peux vous voir la vraie question concerne l'affirmation du DataSet retourné. Vous pouvez toujours utiliser Assert.AreEqual, mais à la place tester que le DataSet contient les données de cellule que vous attendez étant donné le HashTable.

Assert.AreEqual(ht["key1"], ds.Tables[0].Rows[0][0].ToString()); 
Assert.AreEqual(ht["key1"], ds.Tables[0].Rows[0][1].ToString()); 

Vous pouvez utiliser une boucle pour cela.

Votre méthode de test pourrait ressembler à ceci.

[Test] 
public void Should_Do_Stuff() 
{ 
    MyClass myObject = new MyClass(); 

    DataSet ds = myObject.ExampleMethod(1, "string", ht); 

    Assert.AreEqual(ds.Tables[0].Rows.Count, ht.Count); 
    Assert.AreEqual(ht["key1"], ds.Tables[0].Rows[0][0].ToString()); 
    Assert.AreEqual(ht["key1"], ds.Tables[0].Rows[0][1].ToString()); 
} 

Espérons que vous ayez répondu à votre question.

+0

pouvez-vous être plus élaboré. puisque la table de hachage est des collections sera-t-il la bonne façon de l'essayer? – Arunachalam

+0

Cette méthode retourne un ensemble de données alors comment comparer le résultat attendu et le résultat par exemple si le type de retour est int AREequals. (5, add (2,3)) Je peux vérifier comme ceci – Arunachalam

+0

Est-ce que cela répond à votre question? –

0

Transmettez la valeur null ou créez une nouvelle hashtable avec des données statiques et transmettez-la à cette fonction. Pour vérifier le jeu de données, vous pouvez affirmer sur le nombre de jeux de données renvoyé, est null ou non et également des valeurs si vous le souhaitez.

Questions connexes