title: How slow is too slow for unit tests?
body: <p>Michael Feathers, in <em>Working Effectively With Legacy Code</em>, on pages 13-14 mentions:</p>
  
  <blockquote>
    <p>A unit test that takes 1/10th of a
    second to run is a slow unit test...
    If [unit tests] don't run fast, they
    aren't unit tests.</p>
  </blockquote>
  
  <p>I can understand why 1/10th a second is too slow if one has 30,000 tests, as it would take close to an hour to run. However, does this mean 1/11th of a second is any better? No, not really (as it's only 5 minutes faster). So a hard fast rule probably isn't perfect.</p>
  
  <p>Thus when considering how slow is too slow for a unit tests, perhaps I should rephrase the question. <strong>How long is too long for a developer to wait for the unit test suite to complete?</strong></p>
  
  <p>To give an example of test speeds. Take a look at several MSTest unit test duration timings:</p>
  
  <pre><code>0.2637638 seconds
  0.0589954
  0.0272193
  0.0209824
  0.0199389
  0.0088322
  0.0033815
  0.0028137
  0.0027601
  0.0008775
  0.0008171
  0.0007351
  0.0007147
  0.0005898
  0.0004937
  0.0004624
  0.00045
  0.0004397
  0.0004385
  0.0004376
  0.0003329
  </code></pre>
  
  <p>The average for all 21 of these unit tests comes to 0.019785 seconds. Note the slowest test is due to it using Microsoft Moles to mock/isolate the file system. </p>
  
  <p>So with this example, if my unit test suite grows to 10,000 tests, it <em>could</em> take over 3 minutes to run. </p>