In both JUnit 4 and TestNG 5, a test case is a class which contains at least one test method. The test method is designated using the @Test annotation from the respective framework. An Arquillian test case looks just like a regular JUnit or TestNG test case with two declarative enhancements:
The class contains a static method annotated with @Deployment that returns a JavaArchive
The class is annotated with @RunWith(Arquillian.class) (JUnit) or extends Arquillian (TestNG)
With those two modifications in place, the test is recognized by the Arquillian test runner and will be executed in the target container. It can also use the extra functionality that Arquillian provides—namely container resource injections and the injection of beans.