J'écris du code asynchrone super simple. Il suffit d'enregistrer un fichier hors fil.
J'aimerais tester ce code à l'aide du framework de test unitaire MSTest dans Microsoft Visual Studio Team System 2008.
Comment puis-je faire cela?
Je voudrais simplement bloquer la méthode de test jusqu'au retour de la méthode. Je peux imaginer des moyens de le faire, mais je suis époustouflé qu'il n'y a pas de bonnes pratiques ou de classes d'assistance autour de cela.
Je vois beaucoup de Silverlight, mais rien de générique.
.net
unit-testing
Kevin Moore
la source
la source
Réponses:
Visual Studio 2012 (anciennement «Visual Studio 11») a introduit la prise en charge des tests asynchrones . Cela ressemble à ceci:
[TestMethod] public async Task FooTest() { var result = await SomeAsyncOperation(); Assert.IsTrue(someCondition); }
Comme indiqué dans les commentaires, le
Task
type de retour est important . Cela ne fonctionnera pas si vous déclarez la méthode comme retournantvoid
.la source
Task
type de retour est obligatoire -void
ne fonctionnera pas (du moins pas sur la mise à jour 4 de VS2013)void
retour des méthodes asynchrones ne peut pas être attendu)Au lieu d'appeler directement les méthodes System.IO, essayez plutôt d' utiliser la bibliothèque SystemWrapper . Ensuite, dans vos tests, vous pouvez simuler les appels comme vous le souhaitez, renvoyer ce que vous voulez à votre test, y compris les conditions d'erreur, et vérifier que votre logique fonctionne comme prévu.
Si vous voulez voir un exemple, jetez un œil à ce billet de blog montrant comment il peut être utilisé avec RhinoMocks.
la source