Domanda

Ho una classe statica che avvolge alcuni metodi nativi da winspool:

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

Vorrei deriderli per i test unitari, ma non sono riuscito a trovare un modello per questo. (Tutti evitano le classi statiche?)

È stato utile?

Soluzione

Sì, la classe statica è generalmente disapprovato nel campo del test unitario e del derisione . AFAIK nessun framework di derisione open source (come Rhino Mocks ) supporta derisione di classi statiche

Se devi assolutamente deridere la classe statica, allora temo che devi scegliere Typemock , che è non libero.

Altri suggerimenti

Microsoft ha prodotto un framework Fakes per Visual Studio 2012 Ultimate che consente di deridere i tipi statici utilizzando gli shim. Gli spessori sono "falsi" assemblee che forniscono delegati per tutti i metodi accessibili dall'esterno. Le chiamate vengono quindi instradate attraverso il filtro eventi e ovunque il test abbia impostato uno dei suoi delegati, il delegato gestisce la chiamata. Non che nessuno voglia incoraggiare tipi statici che non sono gestiti attraverso l'iniezione di dipendenza. La direzione preferita è allontanarsi per la necessità di spessori e verso l'uso di tronchetti usando DI.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top