2017-08-17 8 views
0

Dans ma méthode de test codedui, je compare la valeur de sortie avec mon fichier csv. Fondamentalement, j'utilise l'application calculatrice et en sélectionnant l'option du mode programmeur. En cliquant sur un bouton (ici cliqué sur le bouton 8) et en comparant la sortie sous les valeurs Decimal, HexaDecimal, Binary et Octal avec mon résultat (c'est-à-dire mon fichier csv). En comparant le résultat, j'ai utilisé la méthode Assert.AreEqual(). Ci-dessous mon extrait de code:Assert.AreEqual a échoué. Attendu: <‭8‬>. Réel: <8> lors de l'exécution de ma méthode de test d'interface utilisateur codée

try 
{ 
    Assert.AreEqual(TestContext.DataRow["Binary"].ToString().Split(' ')[1].Trim(), control.ToString().Split(' ')[1].Trim(), "Binary value matches with expected."); 
} 
catch (AssertFailedException err) 
{ 
    Console.WriteLine(err.Message); 
} 

Cependant, lorsque je courais le TestMethod, mon test passé et illustré ci-dessous un message:

Assert.AreEqual a échoué. Attendu: < 1000>. Réel: < 1000>.

Je ne sais pas pourquoi Asser.AreEqual a échoué.

+0

Existe-t-il des caractères non imprimables dans ces valeurs? Définir un point d'arrêt sur la ligne assert, déboguer le test et vérifier les deux valeurs ... –

+0

Merci Johan, j'ai mis un point d'arrêt et j'ai trouvé que Assert.AreEqual effectuait uniquement la vérification d'objet. Référé https://msdn.microsoft.com/en-us/library/ms243486.aspx et m'aide à résoudre le problème auquel j'ai fait face. –

Répondre

0

Ce problème a été résolu en changeant mon Assert.AreEqual (expected, effective, string) (où attendu et la valeur réelle sont string sur Assert.AreEqual (string, string, boolean, string) overloadlist qui vérifie que les deux chaînes spécifiées sont égales ..., en ignorant le cas ou non spécifié l'assertion échoue si elles ne sont pas égaux Affiche un message si l'assertion échoue

J'ai changé mon code comme ci-dessous:

try 
{ 
    Assert.AreEqual(TestContext.DataRow["Binary"].ToString().Split(' ')[1].Trim(), control.ToString().Split(' ')[1].Trim(),true, "Actual Binary value does not match with expected."); 
} 
catch (AssertFailedException err) 
{ 
    Console.WriteLine(err.Message); 
} 

Quand j'ai couru ma méthode d'essai cela fonctionne.J'ai mentionné ci-dessous msdn site pour plus de clarification: Assert.AreEqual Method et Assert.AreEqual Method (String, String, Boolean, String)

+0

Juste pour rendre la réponse plus évidente. cela vous dérangerait-il de le lancer en appelant l'utilisation de l'option ignore cas de 'Assert.AreEqual' pour les comparaisons de chaînes? –