Come decorare una classe come non verificabile per la copertura del codice?
-
05-07-2019 - |
Domanda
Background: Visual Studio 2008, C #, .Net 3.5.
Ho un numero di classi di utilità che semplicemente non sono testabili dall'unità. Questo principalmente perché interagiscono con le risorse (ad es. Database, file ecc.).
Esiste un modo per decorare queste classi in modo che il motore di copertura del codice di Visual Studio le ignori, in modo da non ridurre la percentuale di copertura del codice?
Soluzione
C'è una risposta in questo articolo su come utilizzare [Sistema. Diagnostics.DebuggerHidden] o [ System.Diagnostics.DebuggerNonUserCode] Attributi per escludere metodi dalla copertura del codice.
Aggiornamento come da commento di David:
A partire da .NET 4.0 esiste un attributo dedicato per questo: [ExcludeFromCodeCoverage]
Altri suggerimenti
Quando aggiorni il tuo progetto a .NET 4, otterrai ExcludeFromCodeCoverageAttribute Class .
Uno dei motivi per cui vuoi scrivere unit test è rendere il tuo codice liberamente accoppiato. Puoi leggere questo articolo se sei interessato a imparare a scrivere codice liberamente accoppiato (nel caso in cui non sai come).
Dire che puoi provare a utilizzare strumenti come TypeMock che possono aiutarti a deridere i tuoi oggetti anche se non scriverli utilizzando Principio dell'iniezione di dipendenza .
TypeMock è stato il primo Mock Framework che ho usato. Passo a Rhino Mocks perché con TypeMock non dovevo essere abbastanza disciplinato per scrivere un codice liberamente accoppiato.