Arquillian Core 1.0.0.Alpha5 Released

Since we wrote this post we didn't laze around. Check our latest announcement.

The Arquillian team is proud to announce the 1.0.0.Alpha5 release of the Arquillian Core component!

After a long wait we can finally give you some good news.

drum roll…

Arquillian 1.0.0.Alpha5 has been released!

In the beginning of the cycle we came to the conclusion that the old Arquillian core just did not cut it in respect to where we were heading, so big parts of it has been rewritten…

Some of the highlights in this release:

  • DeploymentException assertion – Verify that a @Deployment throws the expected deployment exception using @ShouldThrowException(Exception.class)
@Deployment @ShouldThrowException(WeldException.class)
public static WebArchive createTestDeployment() { }
  • Multiple deployments – Define as many @Deployment methods as you may need. If you need them deployed in order, use @Deployment.order. When dealing with multiple @Deployments you have to specify which deployment context a @Test method should run within by using the @OperateOnDeployment("deploymentName"). The deploymentName is specified using @Deployment.name. With this you can swap between in container testing in one deployment, @RunAsClient in the context of another deployment and back incontainer in the third.
@Deployment(order = 1, name = "dep1")
public static WebArchive createTestDeployment() { }
 
@Deployment(order = 2, name = "dep2")
public static WebArchive createTestDeployment2() { }
 
@Test @OperateOnDeployment("dep1")
public void callActive1() throws Exception { }
 
@Test @OperateOnDeployment("dep2")
public void callActive1() throws Exception { }
  • Multiple containers – Deploy multiple deployments to multiple containers in the same test class using @TargetsContainer("containerName") on the @Deployment methods. Combined with @OperateOnDeployment("name") individual @Test methods can now execute in different containers.
@Deployment(name = "dep1") @TargetsContainer("node-1")
public static WebArchive createTestDeployment() { }
 
@Deployment(name = "dep2") @TargetsContainer("node-2")
public static WebArchive createTestDeployment2() { }
 
@Test @OperateOnDeployment("dep1")
public void callActive1() throws Exception { }
 
@Test @OperateOnDeployment("dep2")
public void callActive1() throws Exception { }
  • Configurable protocol – Previously the protocol was bound to the container you were running on. The container still has a default, but this can now be overwritten on a pr @Deployment method level by using the annotation @OverProtocol("protocolName").
@Deployment(name = "dep1") @TargetsContainer("node-1") @OverProtocol("Servlet 3.0")
public static WebArchive createTestDeployment() { }
 
@Deployment(name = "dep2") @TargetsContainer("node-2") @OverProtocol("EJB 3.1")
public static WebArchive createTestDeployment2() { }
 
@Test @OperateOnDeployment("dep1") // in container text execution is done over HTTP
public void callActive1() throws Exception { }
 
@Test @OperateOnDeployment("dep2") // in container text execution is done over RMI
public void callActive1() throws Exception { }
  • Descriptor deployment – Need to deploy a JMS Queue, or a DataSource? Use the Desciptor deployment. Works the same as a Archive deployment by defining a deployment method with return type Descriptor.
@Deployment
public static Descriptor createTestDeployment() { }
  • Arquillian Drone – A new extension for Web testing. Integrates Arquillian with Selenium, WebDriver and Arquillian Ajocado.
@RunWith(Arquillian.class)
public class AjocadoTestCase {
   // load ajocado driver
   @Drone
   AjaxSelenium driver;
}

Some changes:

  • @Run(AS_CLIENT) and @Run(IN_CONTAINER) have been replaced by @RunAsClient. RunMode is default read from @Deployment.testable@, but you can override the run mode for a in-container deployment using @RunAsClient on the @Test method.
  • New Configuration XML format
  • GlassFish 3.0 support was replaced with 3.1 support.

Big thanks to the Arquillian and ShrinkWrap community for helping us with this release!

A extra goes out to, Karel Piwko for Arquillian Drone, Jason Porter for the GlassFish Remote 3.1 container and David R Allen for other random issues.

[ Issues | Javadoc: API, SPI | Reference Guide | Release Notes | Maven artifacts ]

What is Arquillian?

Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.

Release details

Component Arquillian Core
Version 1.0.0.Alpha5 view tag
Release date 2011-03-18
Released by Aslak Knutsen
Compiled against

Published artifacts org.jboss.arquillian

  • org.jboss.arquillian » arquillian-api jar javadoc pom
  • org.jboss.arquillian » arquillian-spi jar javadoc pom
  • org.jboss.arquillian » arquillian-impl-base jar javadoc pom
  • org.jboss.arquillian » arquillian-junit jar javadoc pom
  • org.jboss.arquillian » arquillian-testng jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-cdi jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-ejb jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-osgi jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-resource jar javadoc pom
  • org.jboss.arquillian.protocol » arquillian-protocol-servlet jar javadoc pom
  • org.jboss.arquillian.protocol » arquillian-protocol-jmx jar javadoc pom
  • org.jboss.arquillian.protocol » arquillian-protocol-jmx-osgi jar javadoc pom

Release notes and resolved issues 64

Feature Request
  • ARQ-67 - Need to be able to deploy resources to the container alongside the primary deployment
  • ARQ-152 - Support multiple container configurations for same container type
  • ARQ-153 - Protocol configuration element should be separate from Container
  • ARQ-158 - Replace method arguments with toString instead of Class
  • ARQ-167 - Support @EJB.mappedName for TestClass injection
  • ARQ-168 - Validation on container configuration properties
  • ARQ-196 - Should support controlling multiple Containers
  • ARQ-215 - Configuration should support loading of Configuration data for extensions/frameworks
  • ARQ-218 - ServiceLoader should support Default implementations
  • ARQ-227 - Support Deployment exception assert
  • ARQ-283 - Support loading of configuration for Arquillian-Selenium
  • ARQ-299 - Create a IN_CONTAINER Exception Proxy
  • ARQ-309 - Allow configuration to specify an OpenEJB configuration resources (openejb.xml)
  • ARQ-310 - Add a post-construct method to ContainerConfiguration
  • ARQ-313 - ARQ should support Multi-module (Multiple WAR deployments) testing
  • ARQ-316 - more complete support for servlet 2.5
  • ARQ-319 - Allow container START_TIME to be configurable in arquillian.xml
  • ARQ-323 - Implement a GlassFish 3.1 remote container based on REST API
  • ARQ-326 - Track JBoss AS Final
  • ARQ-329 - Support Ajocado in Selenium extension
  • ARQ-346 - Create a GlassFish 3.1 Embedded Container
  • ARQ-349 - Create a Protocol processor SPI for modifying the final deployment generated by the DeploymentPackager
  • ARQ-353 - Remove DeploymentScanner disabling
  • ARQ-360 - Honor system property for exporting test archives
  • ARQ-362 - @Run(AS_CLIENT) support on @Test
  • ARQ-367 - Add support for @ArquillianResource
  • ARQ-371 - Split Arquillian Selenium configuration according to framework
  • ARQ-373 - Support multiple Web Test objects in one test
  • ARQ-378 - For managed appservers, a configurable "is it up?" URL would be nice
  • ARQ-380 - Core should support AroundInvoke style handlers of Events
  • ARQ-383 - rename MaxDeploymentsBeforeRestart to maxTestClassesBeforeRestart
  • ARQ-387 - Selenium extension should use the TestEnricher SPI to do injection into the test case
  • ARQ-389 - Rename @Target, @Expected, @Run and @DeploymentTarget annotations
Bug
  • ARQ-57 - JBossAS Remote Containers Depend upon Sun JDK
  • ARQ-110 - RunMode Local should reuse protocol-local
  • ARQ-124 - Move jndi.properties out as Configuration
  • ARQ-164 - NPE in DeployableTestBuilder
  • ARQ-171 - ServletMethodExecutor should get context path from container
  • ARQ-211 - Protocol Servlet should be automatically registered for Tomcat Embedded 6
  • ARQ-217 - Servlet 2.5 Protocol should support Application WebArchives
  • ARQ-275 - WeldSEContainer doesn't meet Weld 1.1 SPI contract
  • ARQ-281 - NPE when JBOSS_HOME isn't set
  • ARQ-289 - All poms refere to old svn repo, update to git
  • ARQ-290 - performence/pom.xml references WELD-1.0.1
  • ARQ-292 - Enforcing Maven 3 in build/pom.xml does not seem to work...
  • ARQ-298 - Implement conversations based on the new Weld context management API
  • ARQ-304 - String based properties cannot be loaded through System properties
  • ARQ-330 - Container Reference for Weld EE Embedded use 1.0.1.SP1 in example, should be 1.1.0.Beta1
  • ARQ-335 - Weld SE container does not properly load extension classes at boot
  • ARQ-340 - mappedName and lookup attributes are ignored for @EJB in jections into test cases, forcing a naming convention on implementations
  • ARQ-352 - ArquillianDescriptor should support configuration of extensions
  • ARQ-356 - JBoss AS Managed does not allow to set RMI port used for deployment. Forces users to use 1099
  • ARQ-372 - The @EJB annotation does not work in a TestCase that extends abstract class
  • ARQ-377 - Reloaded Container test is failing; MCServer and ShrinkWrapDeployer can't bind to correct scope
  • ARQ-379 - Arquillian does not allow any configuration of OpenEJB
  • ARQ-392 - impl-base does not export resolver-maven-impl dep
Task
  • ARQ-192 - Install OSGi bundles in memory
  • ARQ-259 - Provide xsd for all containers and for core
  • ARQ-291 - Create Selenium extension
  • ARQ-370 - Merge remote aslakknutsen/the_bigger_picture back into upstream/master
  • ARQ-374 - Renaming Selenium extension to more general name
  • ARQ-384 - Prepare Alpha-5 release
  • ARQ-388 - Update Selenium version to 2.0b2
  • ARQ-393 - Update Arquillian Drone Docbook

Thanks to the following list of contributors: Aslak Knutsen, Karel Piwko, Andrew Lee Rubinger, David R. Allen, Andy Gibson, Dan Allen, Jason Porter