title: Arquillian Run Modes
body: <p>I'm trying to wrap my head around Arquillian and am just not fundamentally understanding the difference between <code>in-container</code> mode vs. <code>as-client</code> mode.</p>
  
  <p>My understanding is that, with Arquillian/ShrinkWrap:</p>
  
  <ul>
  <li>You create an archive that only contains the components you want to integrate and test with</li>
  <li>You stream this in-memory archive to an actual container (deploying it)</li>
  <li>You run the archive as a test inside the container</li>
  <li>You make an assertion about what will happen as a result of that test</li>
  </ul>
  
  <p>So, from my perspective, everything just "feels" like it would always be <code>in-container</code>, since the tests are always executing inside a container.</p>
  
  <p><strong>Please help me understand the differences between these two modes and what types of integration tests both modes are suited for.</strong> Bonus points for providing a concrete code example (and <em>not</em> the vague ones straight from the Reference Guide!) that explain why/how you run the tests in both modes. Thanks in advance!</p>