title: Terminology for integration tests which test each layer and the layers below it (Jenga tests)
body: <p>In my app, I've developed an automated testing strategy where each layer has some unit tests and some integration tests. </p>
  
  <p>It seems to me that "integration test" is a fairly sweeping term, which is applicable whenever a test involves more than one unit.</p>
  
  <p>For my integration tests, I felt like I had two options:</p>
  
  <ul>
  <li>"test the combination of units in a single layer, and fake out everything else" (e.g in-memory databases or stubbing out the data access layer). Useful to confirm that DI and messaging is wired up correctly.</li>
  </ul>
  
  <p>or </p>
  
  <ul>
  <li>"tests for a given layer should operate against real instances of lower layers" (e.g. hit the database). Useful to gain confidence that the app as a whole will work.</li>
  </ul>
  
  <p>My question is, are there different terms in common use for each scenario? I've started calling the layer-and-below tests "<strong>Jenga tests</strong>" because they make sure that each layer aligns or stacks properly on the layer below, and the whole tower doesn't fall over.</p>
  
  <p>(p.s. I'm not interested in discussing the pro's and con's of unit tests vs integration tests, or faking the database - just terminology).</p>