One of the important things to realize when building Arquillian test cases is that your test cases are essentially components within the application server. Arquillian will process the injection points in your code. This goes against the typical runtime of JUnit or TestNG, where the test case operates by itself. You have the container; it's the gift that Arquillian has given you.
This is one of the reasons I strive hard to point out that Arquillian isn't necessarily unit testing, but you're likely performing functional tests, integration tests, or acceptance tests. Your unit tests may rely on being run in a standard JUnit fashion, whereas your testing in Arquillian may require a different setup.
Arquillian by default provides three injection points to your test case, assuming that you are running with a container that supports them: