LLMpediaThe first transparent, open encyclopedia generated by LLMs

Arquillian

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: Eclipse Jakarta EE Hop 4
Expansion Funnel Raw 76 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted76
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
Arquillian
NameArquillian
AuthorJez Humble
DeveloperRed Hat
Released2010
Programming languageJava
Operating systemCross-platform
PlatformJava EE, Jakarta EE
LicenseApache License

Arquillian Arquillian is an open-source testing framework designed to simplify integration and functional testing of Java applications by managing in-container test execution, deployment, and lifecycle across multiple application servers. It provides adapters and extensions to run tests inside containers such as WildFly, GlassFish, Tomcat, and Jetty, integrating with popular build tools and continuous integration systems to enable repeatable, portable testing strategies for enterprise software stacks. Arquillian's design emphasizes pluggable containers, portable test cases, and collaboration with JUnit, TestNG, and other Java testing ecosystems.

Overview

Arquillian focuses on executing tests inside the same runtime as the production application so that integration points with Java EE and Jakarta EE components—such as Enterprise JavaBeans, Java Persistence API, and Contexts and Dependency Injection—are exercised. The project targets interoperability with servers like WildFly, Payara, WebLogic Server, and servlet containers like Apache Tomcat and Eclipse Jetty, while coordinating with testing libraries such as JUnit, TestNG, Mockito, Hamcrest, and tools like Arquillian Graphene for UI-driven tests. Arquillian complements Maven and Gradle by supplying plugins and adapters, and integrates with CI systems including Jenkins, Travis CI, and GitLab CI/CD.

Architecture and Components

Arquillian's architecture separates test execution control, deployment packaging, and container adapters. Core components include the Arquillian Core that orchestrates test execution, the ShrinkWrap library for programmatic archive creation compatible with JAR, WAR, and EAR artifacts, and Container SPI implementations for various runtimes. Common components and extensions include: - ShrinkWrap: creates artifacts for Maven Central-style deployments and integrates with JBoss packaging. - Test Enricher: integrates with Contexts and Dependency Injection and Enterprise JavaBeans to inject resources like DataSource or EntityManager. - Container Adapters: specific implementations for WildFly, GlassFish, TomEE, WebLogic, IBM WebSphere, and lightweight containers such as Arquillian Cube and Arquillian Drone. Arquillian also interacts with networking and virtualization projects such as Docker, Kubernetes, and orchestration tools like OpenShift for containerized test environments.

Test Runners and Containers

Arquillian supports multiple test runners and execution models. Tests can run in-process using embedded containers, remotely via managed containers, or as client-side tests interacting with a running server. Integration exists with test harnesses and runner frameworks including JUnit and TestNG, enabling annotations and lifecycle callbacks to control deployment and teardown. Available container types include: - Embedded containers: run within the same JVM using adapters for Apache Tomcat, Jetty, and select WildFly modes. - Managed containers: lifecycle controlled by Arquillian for servers like GlassFish and WildFly. - Remote containers: connect to externally managed instances such as WebLogic and WebSphere. - Container orchestration: adapters to Docker and Kubernetes via projects like Arquillian Cube and support for OpenShift for cloud-native pipelines.

Usage and Examples

Typical usage combines ShrinkWrap for archive assembly and annotations from the selected test runner. A JUnit test class may use annotations to declare deployment artifacts and injection points for Enterprise JavaBeans or Java Persistence API resources. Examples often demonstrate: - Building a WAR with ShrinkWrap and declaring it via a @Deployment method. - Injecting an EntityManager to validate persistence behavior with Hibernate ORM or EclipseLink. - Using Arquillian Drone with Selenium for browser-driven UI tests against WildFly or Tomcat. - Combining Arquillian with Mockito for mocking collaborators while exercising real container services. Practical guides show integration patterns for microservices using Spring Framework, JAX-RS, and messaging via Apache ActiveMQ or RabbitMQ.

Integration with Build Tools and CI

Arquillian integrates with Maven through Surefire and Failsafe plugins and with Gradle via community plugins, enabling test phases to include in-container execution. CI integration guides demonstrate pipelines for Jenkins, Travis CI, CircleCI, and GitLab CI/CD to provision containers using Docker Compose, Kubernetes, or cloud platforms like Amazon Web Services, Google Cloud Platform, and Microsoft Azure. Combined with artifact repositories such as Maven Central and Artifactory, Arquillian-based tests become part of automated delivery flows for Continuous Integration and Continuous Delivery pipelines.

Community and Development History

Arquillian originated in the early 2010s with contributions from developers associated with Red Hat and the JBoss community, and it has evolved through ecosystem collaborations with projects like ShrinkWrap, Graphene, and Drone. The project has been discussed at conferences and venues such as Devoxx, JavaOne, Red Hat Summit, and QCon, and has seen participation from organizations including Payara Services, Oracle Corporation, and community contributors on platforms like GitHub. Development follows open-source processes with issue tracking and pull requests, and Arquillian remains influential in integration testing practices across Jakarta EE and Spring Framework ecosystems.

Category:Java (programming language) testing frameworks