Domanda

Ho una classe di registrazione che viene istanziato all'avvio di una console app e memorizzato in una variabile statica.

Se voglio una classe di utilizzare il logger dovrebbe essere trasmessa alla classe nel costruttore o direttamente riferimento?

Sto cercando di scrivere unit test e in entrambi i casi dovrei essere in grado di farlo. Basta significa che devo impostare la variabile statica prima di chiamare il codice che lo utilizza.

Saluti.

Nessuna soluzione corretta

Altri suggerimenti

suona come quello che stai cercando è una sorta di IOC container . Si potrebbe utilizzare Unità del EntLib o qualcos'altro di simile.

Per rendere le vostre classi di unità testabili possibile, tutte le dipendenze, tra cui taglialegna, dovrebbero essere passati in quanto possibile. Questo è ciò che si chiama Dependency Injection (DI), ed è un modello molto comune e standard per la scrittura di unità di codice verificabile. La registrazione è quasi sempre una preoccupazione trasversale che è incorporato solo all'interno i corpi dei metodi perché non ci sono davvero tutti i quadri AOP decenti per tirare adeguatamente queste preoccupazioni e li applica in modo dichiarativo. Avere a che fare con la registrazione durante la scrittura / esecuzione di test di unità solo aumenta la complessità delle prove, aggiungendo eventualmente preoccupazioni di configurazione aggiuntive, se si vuole davvero mantenere i test più semplice e mirato possibile.

Come sull'utilizzo del Static Gateway modello ?

Si potrebbe creare un'istanza di esso e memorizzare tale istanza come membro della stessa classe e tornare che tramite una proprietà.

es. Logger.Default
Questo restituirà il riferimento all'istanza che è stato creato.

EDIT: Un esempio di questo potrebbe essere classe Console & è il metodo setout. Voglio dire, è possibile continuare a utilizzare Console.WriteLine .... e se si desidera modificare il flusso, utilizzare il metodo setout. Si reindirizza l'output a un nuovo flusso.

La speranza che aiuta.

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