2011-01-05 3 views
5

Qual è la migliore pratica relativa alle dichiarazioni Debug.Print?C#: best practice Debug.Print

Devo sporcare i miei metodi di classe con le dichiarazioni Debug.Print o dovrei evitare del tutto lo Debug.Print?

Se le dichiarazioni Debug.Print sono accettabili, dovrei considerare l'utilizzo di Trace.Print o EventLog?

Le istruzioni Debug.Print sono necessarie con le unit test? Posso evitare le dichiarazioni Debug.Print con test unitari ben scritti?

risposta

5

Debug.Print è accettabile, non ultimo perché verranno compilati nelle versioni di rilascio. "Littering" il tuo codice con esso, tuttavia, non sembra particolarmente produttivo o utile.

È possibile aggiungerlo durante il debug di una particolare area di codice. Una volta identificato il difetto, è possibile scrivere un test unitario per coprire il caso, correggere il bug e quindi rimuovere la chiamata a Debug.Print.

Quello che a volte uso e lasciare nella base di codice è Debug.Assert - è come un built-in punto di interruzione se la mia domanda non è in uno stato di attesa, che è solo una rete di sicurezza aggiunto mentre si fa sia automatizzato e test manuali .

Debug.Print non è necessario nei test di unità e non deve essere aggiunto per motivi di test dell'unità.

+0

Si noti che anche le istruzioni 'Debug.Assert' sono [rimosse in una build di rilascio] (http://stackoverflow.com/a/13383661/1497596). (A meno che 'DEBUG' sia stato aggiunto alla configurazione di Release.) Considera l'uso di [' Trace.Assert'] (http://stackoverflow.com/a/6752696/1497596) se vuoi che le tue asserzioni vengano eseguite in una versione di Release . – DavidRR

2

Non hai affatto bisogno di Debug.Print con i test delle unità! Il punto dei test unitari è che ottieni automaticamente un'indicazione sul fatto che il test sia riuscito o meno, non è necessario cercare stampe di debug per questo.

NUnit è una libreria di test dell'unità di facile utilizzo.

Per quanto riguarda la traccia o la registrazione, non è necessario sporcare il codice con le stampe di debug. Prova interception with Castle Windsor o altri framework che supportano AOP.

0

Non ho mai usato Debug.Print o Trace.Print. Scrivo una buona quantità di test unitari. Non ho mai trovato che ho bisogno di usare gli oggetti Debug o Trace con i test di unità che scrivo. Cerco di testare il più possibile, tuttavia.