Si une méthode ne renvoie rien, il s'agit de l'un des cas suivants
-
impératif - Soit vous demandez à l'objet de faire quelque chose à lui-même, par exemple changer d'état (sans attendre de confirmation, il est supposé que cela sera fait).
-
information - simplement notifier à quelqu'un que quelque chose s'est produit (sans attendre d'action ou de réponse) respectivement.
Méthodes impératives - vous pouvez vérifier si la tâche a été réellement effectuée. Vérifier si le changement d'état a réellement eu lieu. par exemple
void DeductFromBalance( dAmount )
peut être testé en vérifiant si le solde après ce message est bien inférieur à la valeur initiale par dAmount
Méthodes d'information - sont rares en tant que membre de l'interface publique de l'objet ... donc pas normalement unit-tested. Cependant, si vous devez le faire, vous pouvez vérifier si la manipulation à faire sur une notification a lieu. par ex.
void OnAccountDebit( dAmount ) // emails account holder with info
peut être testé en vérifiant si l'e-mail est envoyé
Publiez plus de détails sur votre méthode actuelle et les gens seront en mesure de mieux répondre.
Mise à jour : Votre méthode fait 2 choses. En fait, je la diviserais en deux méthodes qui peuvent maintenant être testées indépendamment.
string[] ExamineLogFileForX( string sFileName );
void InsertStringsIntoDatabase( string[] );
String[] peut être facilement vérifié en fournissant à la première méthode un fichier factice et les chaînes attendues. La deuxième méthode est un peu plus délicate vous pouvez soit utiliser un Mock (google ou recherche stackoverflow sur les frameworks de mocking) pour imiter la base de données, soit utiliser la base de données réelle et vérifier si les chaînes ont été insérées au bon endroit. Vérifiez ce fil pour quelques bons livres... Je recommanderais Pragmatic Unit Testing si vous êtes dans le pétrin.
Dans le code, il serait utilisé comme suit
InsertStringsIntoDatabase( ExamineLogFileForX( "c:\OMG.log" ) );