2010-11-18 59 views
8

J'écris des méthodes d'extension pour tester les valeurs de mon test unitaire. Un exemple naïf serait:Comment créer des méthodes MSTest Assert personnalisées avec callstack "correct"

et l'utiliser dans un test:

someBool.ShouldBeTrue(); 

Tout fonctionne, sauf que la ligne de lancer l'exception sera celui que je finis sur lorsque vous double-cliquant sur le Echec du test dans la fenêtre Résultats du test et dans Détails du résultat du test, la ligne de lancement est affichée dans la trace de la pile d'erreurs.

Y at-il un moyen de contourner cela, de sorte que "someBool.ShouldBeTrue();":

  1. est la ligne double-cliquant sur le test à défaut dans la fenêtre Résultats des tests ouvre?
  2. est la seule ligne dans la trace de la pile?
+0

Si vous faites cela, vous pouvez jeter un oeil à ce projet: http://fluentassertions.codeplex.com/. – Steven

Répondre

1

Je pense avoir trouvé la réponse. Tout ce que vous devez faire est de mettre vos classes/méthodes d'assertion personnalisées dans un ensemble séparé. Vous pouvez avoir cela comme un projet séparé dans la même solution, si vous le souhaitez.

+0

Aurait pu jurer que j'avais mes méthodes d'assertion personnalisées dans un assemblage séparé lorsque j'ai écrit cette question. Cependant, quand j'essaye maintenant, tout fonctionne comme prévu.Mes projets de test font référence à un dll contenant les méthodes d'assertion et lorsqu'un test échoue 1 (dans ma question initiale) est rempli. 2 n'est pas, mais ça va. Merci – hcanber

+1

Assurez-vous qu'il n'y a pas de fichier .pdb pour l'assembly séparé. – hcanber

2

Il y a une bibliothèque de classes déjà écrit pour que: http://geekswithblogs.net/sdorman/archive/2009/01/31/adding-custom-assertions-to-mstest.aspx

Il y a une citation du lien ci-dessus:

... Pour référence, les indisponibles Affirme sont:

  • Assertion .IsNaN
  • Assert.IsEmpty
  • Assert.IsNotEmpty
  • Assert.Greater
  • Assert.GreaterOrEqual
  • Assert.Less
  • Assert.LessOrEqual
  • Assert.IsAssignableFrom
  • Assert.IsNotAssignableFrom
  • CollectionAssert.IsEmpty
  • CollectionAssert.IsNotEmpty
  • StringAssert.AreEqualIgnoringCase
  • StringAssert.IsMatch
  • FileAssert.AreEqual
  • FileAssert.AreNotEqual

... J'ai créé une bibliothèque de classes qui comprend tous à l'exception des méthodes FileAssert et StringAssert.IsMatch. ... Vous pouvez télécharger la classe à partir de mon dossier public SkyDrive: https://skydrive.live.com/?cid=93d618d639ec9651&id=93D618D639EC9651%211283