si riconosce questo può essere una cattiva idea, ma potrebbe non essere a conoscenza delle alternative. Dovresti cercare in mocking frameworks - possono fornire un modo per iniettare implementazioni alternative nel tuo codice in fase di runtime nei test di unità. Questa è una pratica consolidata per consentire al codice di comportarsi diversamente nei test e nella produzione.
Sulla domanda principale.
Questo dipende dal framework di test dell'unità che si sta utilizzando. Non sono a conoscenza di una funzione specifica in NUnit (ad esempio) che segnala che ci si trova in un test. Altri framework (come MS Test) potrebbero benissimo fornire questo. Tuttavia, è facile da fare da soli.
Se stai legame con il codice sorgente, basta usare una direttiva #define per definire una variabile condizionale è possibile ramo su.
Se stai legandosi a una biblioteca, mi sento di raccomandare la creazione di una classe che si utilizza per tenere traccia se ci si trova in un test di unità o il codice vero e proprio, e impostare quella classe nella TestFixture setup method per indicare sei eseguire un test. Puoi anche usare Environment.SetEnvironmentVariable
come metodo per evitare di scrivere una classe speciale.
questo dipende dal vostro quadro di test, si prega di elaborare. –
Questa è una pessima idea. Un'idea davvero pessima. Un'idea stupendamente pessima. – Will