Question

J'ai une classe statique qui enveloppe certaines méthodes natives de Winspool:

public static class WinSpool
{
     [DllImport("winspool.drv")]
     public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
     ...
     //some more methods here
}

Je voudrais me moquer d'eux pour les tests unitaires, mais je n'ai pas trouvé de modèle pour cela. (Est-ce que tout le monde évite les classes statiques?)

Était-ce utile?

La solution

Oui, la classe statique est généralement a été désapprouvé dans le domaine des tests unitaires et des moqueries . Autant que je sache, un framework mock open source (tel que Rhino Mocks ) prend en charge la classe statique moqueuse

Si vous devez absolument et positivement vous moquer de la classe statique, je crains que vous n'ayez à choisir Typemock , qui est pas gratuit.

Autres conseils

Microsoft a développé un framework Fakes pour Visual Studio 2012 Ultimate qui permet de simuler des types statiques à l'aide de shims. Les cales sont "fausses". des assemblys qui fournissent des délégués pour toutes les méthodes accessibles de l'extérieur. Les appels sont ensuite acheminés via le filtre d'événements et, chaque fois que le test a configuré l'un de ses délégués, ce dernier gère l'appel. Personne ne souhaite encourager les types statiques qui ne sont pas gérés par l'injection de dépendance. La direction à privilégier est de s’éloigner du besoin de cales et de l’utilisation de talons en DI.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top