J'ai des méthodes qui ont plusieurs threads.sleep qui durent 20 secondes parfois. Ceci est une exigence d'entreprise. J'essaie d'appuyer sur ces méthodes, en moqueur et en sautant ces dormeurs afin que les tests puissent fonctionner plus rapidement et n'attendent pas 20 secondes. En utilisant le cadre du MOQ. Appréciez les idées sur la manière de mettre en œuvre cela. P>
3 Réponses :
Vous pouvez réellement introduire l'interface pour les méthodes de thread.sleep et ceci que vous pouvez vous moquer lors de l'écriture UTS
public class Class1
{
IThreadSleep _threadSleep;
public Class1(IThreadSleep threadSleep)
{
_threadSleep = threadSleep;
}
public void SomeMethod()
{
//
_threadSleep.Sleep(100);
}
}
Je ne connais pas le code réel que vous avez, mais au moins avoir une idée. Vous pouvez envelopper votre tests: p> thread.sleep code> dans l'interface code> code> puis injecter celui-ci à votre gestionnaire d'entreprise \ contrôleur. Dans l'utilisation actuelle de la mise en œuvre thread.sleep code> pour attendre, mais dans les tests, maquette que interface code> pour éviter thread.sleep code>. Par exemple:
Il n'y a probablement aucun moyen de simuler Une option serait d'utiliser le profileur API basé Des outils tels que Microsoft Fakes (uniquement dans VS Enterprise) ou Typemoq Professional. P> La meilleure option est de ne pas appeler puis créer une implémentation par défaut que vous utilisez dans votre code: p> Ajoutez une dépendance d'Isleepservice à votre logique d'entreprise p> Vous pouvez ensuite vous moquer facilement de l'isleepservice dans vos tests de votre appareil et transmettez la réelle implémentation dans votre code de production p> p> thread.sleep code> car c'est une méthode statique et ceux-ci ne peuvent pas être moqués de cadres moqueurs dynamicproxy à base de MOQ. thread.sleep code> directement dans votre logique d'entreprise. Ce que vous pouvez faire, c'est d'introduire une interface comme celle-ci p>
La méthode de la moindre friction pour le code qui n'a pas été conçue pour la qualification serait de prendre en compte l'appel de veille dans une méthode virtuelle pouvant être moquée.
Si la durée de fonctionnement doit être de 20 secondes, le test le plus précieux testera la mise en œuvre réelle. Si vous souhaitez tester quelque chose qui a appelé entre dormir, extraire ces opérations vers une méthode ou une classe qui peut être testée séparément