Des événements de Test avec nunit
Je viens juste de commencer avec ATS et pourrait résoudre la plupart des problèmes que j'ai rencontrés sur mon propre. Mais maintenant je suis perdu: Comment puis-je vérifier si les événements sont déclenchés? Je cherchais quelque chose comme Assert.Raise
ou Assert.Fire
mais il n'y a rien. Google n'est pas très utile, la plupart des coups ont été des suggestions comme foo.myEvent += new EventHandler(bar); Assert.NotNull(foo.myEvent);
mais qui ne prouve rien.
Merci!
Vous devez vous connecter pour publier un commentaire.
De vérifier si des événements ont déclenché peut être fait en vous inscrivant à cet événement, et de fixer une valeur booléenne:
En raison de la demande - sans lambdas:
Je préfère faire comme suit:
Avantages: Supporte le multithreading scénario (si le gestionnaire est invoquée dans un autre thread)
ManualResetEvent
.Si vous connaissez l'événement sera déclenché de façon synchrone:
Si l'événement peut être déclenché de manière asynchrone:
Cependant, certains disent que les tests de comportement asynchrone doit être évitée.
J'ai récemment eu à le faire, et c'est en dessous de ce que je suis venu avec. La raison pour laquelle je ne pas faire ce que les autres postes dit, c'est que je n'aime pas l'idée d'une variable conserver l'état et d'avoir à le réinitialiser "manuellement" entre plusieurs événements.
Ci-dessous est le code de la
ClassUnderTest
avecNameChanged
événement qui est testé dansMyTests
tests:Les classes de support sont ci-dessous. Les classes peuvent être utilisées avec n'importe quel
EventHandler<TEventArgs>
ou étendu à d'autres délégués. Événement tests peuvent être imbriquées.Pas vraiment fait cela moi-même, mais vous pourriez peut-être ajouter un mannequin gestionnaire d'événement pour l'événement que vous voulez vous abonner et de l'avoir mise à jour d'un local variable booléenne de sorte que lorsque la méthode est déclenché, vous pouvez vérifier l'état du booléen pour voir si l'événement a été déclenché?
Quelque chose comme:
@theburningmonk: Un ";" est manquant. La version corrigée est:
Cheers! 😉
À l'aide de NUnit et Moq vous pouvez faire plus robuste des cas de test.
Classe fantaisie utilisés pour surveiller les déclencheurs d'événement:
D'installation pour les Déclencheurs d'événement:
Utiliser les Objets Fantaisie dans les Tests:
Vous pouvez ajouter votre gestionnaire d'événements personnalisés qui, par exemple, par incréments de certaines champ de type entier en classe de cas de test. Et puis de vérifier si le champ a été incrémenté.