title: Testing code which uses preprocessor constants
body: <p>Currently I'm doing Unit testing of some project and all is fine except for the places where developers used something like this: </p>
  
  <pre><code>#if USING_EMULATOR
  { do nothing }
  #else
  { do a lot of things }
  #endif
  </code></pre>
  
  <p>or </p>
  
  <pre><code>#if USING_EMULATOR
    return;
  #endif
  { do a lot of things }
  </code></pre>
  
  <p>Where the code under <code>USING_EMULATOR</code> was done for debug purposes I think. Also sometimes <code>#if DEBUG</code> appears. How can I check the actual piece of code if now the one for the debugging purposes only is trying to execute? 
  <code>#undef USING_EMULATOR</code> doesn't help. I don't understand very clearly preprocessor constants and in C# they are even can't be set only defined/undefined so maybe I just do smth wrong?</p>