Arquillian provides a component model for integration tests, which includes dependency injection and container life cycle management. Now, instead of having to manage a runtime in your test, Arquillian brings your test to the runtime. Arquillian Core, Container Extension + Protocols + Enrichers
Pull request Compare This branch is 40 commits behind arquillian:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Arquillian - So you can rule your code. Not the bugs.

Arquillian is an innovative and highly extensible testing platform for the JVM that enables developers to easily create automated integration, functional and acceptance tests for Java middleware.

What is it?

Picking up where unit tests leave off, Arquillian handles all the plumbing of container management, deployment and framework initialization so you can focus on the task at hand, writing your tests. Real tests. In short…

Arquillian makes integration testing a breeze!

Arquillian brings the test to the runtime so you don’t have to manage the runtime from the test (or the build). Arquillian eliminates this burden by covering all aspects of test execution, which entails:

  • Managing the lifecycle of the container (or containers)

  • Bundling the test case, dependent classes and resources into a ShrinkWrap archive (or archives)

  • Deploying the archive (or archives) to the container (or containers)

  • Enriching the test case by providing dependency injection and other declarative services

  • Executing the tests inside (or against) the container

  • Capturing the results and returning them to the test runner for reporting

To avoid introducing unnecessary complexity into the developer’s build environment, Arquillian integrates seamlessly with familiar testing frameworks (e.g., JUnit 4, TestNG 5), allowing tests to be launched using existing IDE, Ant and Maven test plugins — without any add-ons.

Guiding Principles

The Arquillian project adheres to three core principles:

Tests should be portable to any supported container

Keeping container-specific APIs out of the tests enables developers to verify application portability by running tests in a variety of containers. It also means that lightweight containers can be used as a substitute for full containers during development.

Tests should be executable from both the IDE and the build tool

By leveraging the IDE, the developer can skip the build for a faster turnaround and has a familiar environment for debugging. These benefits shouldn’t sacrifice the ability to run the tests in continuous integration using a build tool.

The platform should extend or integrate existing test frameworks

An extensible architecture encourages reuse of existing software and fosters a unified Java testing ecosystem.

Regardless of how complex it becomes, executing an Arquillian test is as simple as selecting “Run As > Test” in the IDE or executing the “test” goal from the build tool.

Contents of distribution

The Arquillian Core, Container Extension, Test Extension, Test integration for JUnit and TestNG, Common TestEnrichers and Common Protocols.


This distribution, as a whole, is licensed under the terms of the Apache License, Version 2.0 (see apl.txt).