title: How do I refactor unit tests?
body: <p>This has been driving me nuts lately...</p>
  
  <p>What is refactoring?</p>
  
  <blockquote>
    <p>Code refactoring is the process of <strong>restructuring existing computer code</strong> – changing the factoring – <strong>without changing its external behavior.</strong></p>
  </blockquote>
  
  <p>And how do we make sure we don't break anything during refactoring?</p>
  
  <blockquote>
    <p><strong>Before refactoring a section of code, a solid set of automatic unit tests is needed.</strong> The tests are used to demonstrate that the behavior of the module is correct before the refactoring.</p>
  </blockquote>
  
  <p>Okay fine. But how do I proceed if I find a code smell <em>in the unit tests themselves</em>? Say, a test method that does too much? How do I make sure I don't break anything while refactoring the unit tests?</p>
  
  <p>Do I need some kind of meta-tests? Is it unit tests all the way down?</p>
  
  <p>Or do unit tests simply not obey the normal rules of refactoring?</p>