Arquillian Warp 1.0.0.Alpha3 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.Alpha3 release of the Arquillian Warp component!

Warp Alpha3 is a last stop to Beta releases which brings mainly enhancements and bug fixes, but also a pretty new documentation:

Documentation Draft

Even though a documentation draft isn’t published yet to the Arquillian site, it is almost completed.

This documentation describes; where Warp’s place in a space of integration testing, how to start with Warp in your project, what features are supported by Warp API and few words about debugging tests and an extension architecture.

Highlighted Enhancements

Jacoco Support

Thanks to Aris Tzoumas, Warp users can now enjoy coverage reporting using arquillian-extension-jacoco. But the contribution was bigger than just that since it enabled a lot of other features.

Meaningful Reporting

The concepts Warp builds upon aren’t really complex, however the implementation needs to make sure that users can understand when something breaks. Warp tries to add as much contextual information as needed to overcome common issues together with a hint on how to resolve an issue.

We hope to improve reporting even more, but here we rely on you – don’t hesitate to report to us when your experience with Warp isn’t as smooth as it should be.

JSF Managed Beans Injection

You can now inject any managed artifact through EL expressions using standard ManagedProperty annotation:

@ManagedProperty(“#{facesContext.application}”) Application application;
@ManagedProperty(“#{myBean}”) SomeFacesBean myBean;

SPI enhancements

Independent Bi-directional Communication

During the Alpha3 development we have identified many common problems which came down to basics that Alpha2 was built upon: piggy-backing on HTTP request/response and wrapping HttpServletResponse.

In order to overcome those problems, Warp now leverages an internal SPI for bi-directional direct communication between test and server (originally created by Aris as a way to support Jacoco).

This is a fundamental change as it changes the way Warp transfers inspections and it also opens up to completely new possibilities by creating a tigher relationship between a test and a server.

Important Bug Fixes

Do not interfere with non-Warp tests

Warp Alpha2 wasn’t really a good citizen and it tried to hook into all tests even though they weren’t annotated with @WarpTest. Those problems should now be addressed.

Enjoy the Release

Alpha3 comes with lot of enhancements which improves the user experience, but it also brings some improvements which were needed to support rising REST and SeamTest migration layer extensions driven by Jakub Narloch and Marek Schmidt.

Let us know if we can smoothly enter a Beta releases train!

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 Warp
Version 1.0.0.Alpha3 view tag
Release date 2013-06-20
Released by Lukas Fryc
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-warp-bom pom
  • org.jboss.arquillian.extension » arquillian-warp-api jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-warp-spi jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-warp-impl jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-warp-jsf jar javadoc pom

Release notes and resolved issues 24

Bug fixes + Jacoco support

Component Upgrade
  • ARQ-1140 - Warp: upgrade LittleProxy to 0.5
  • ARQ-1415 - Warp: upgrade to Arquillian Core 1.0.4
  • ARQ-1416 - Warp: upgrade to ShrinkWrap resolver 1.0.0
Enhancement
  • ARQ-934 - Warp: Reuse manager during whole test
  • ARQ-1325 - Warp: replace piggy-backing on request/response with direct test->filter communication
  • ARQ-1353 - Warp: propagate manager's context to proxy correctly
  • ARQ-1361 - Warp: bring more clarity to ServerResponseTimeoutException failures
Feature Request
  • ARQ-1312 - Warp: introduce RequestProcessingDelegationService
  • ARQ-1319 - Warp: Jacoco support
  • ARQ-1367 - Warp: wrapped response causes NPE
  • ARQ-1368 - Warp: reverse order of chaining of request builder
  • ARQ-1371 - Warp: enricher allowing to inject JSF managed beans / properties
  • ARQ-1386 - Warp: provide a meaningful message when test isn't annotated with @WarpTest
  • ARQ-1400 - Failure to create Enrichment hidden by Client Assertion
Bug
  • ARQ-1027 - Support CommandService Protocol SPI via Warp Protocol
  • ARQ-1291 - Warp: single request execution does enrich only first request
  • ARQ-1320 - Warp - The NonWrittingResponse does not override the flushBuffer() method allowing for committing response.
  • ARQ-1324 - Warp HTTP request header size beyond reasonable limits
  • ARQ-1326 - Warp: the @RunAsClient tests uses proxy even in case the test is not @WarpTest
  • ARQ-1365 - Warp: CommandEventBus doesn't support (port) redirects
  • ARQ-1369 - Warp: TestContainerToClientChannel sporadically fails
  • ARQ-1395 - CommandBusService is started even tho the test is not a @WarpTest
  • ARQ-1396 - CommandEventBusService use wrong metadata to match Request URI
  • ARQ-1397 - Multiple problems running Warp on WildFly 8.0.0.Alpha1

Thanks to the following list of contributors: Lukas Fryc, Aris Tzoumas, Jakub Narloch, Aslak Knutsen

Arquillian Spring Framework Extension 1.0.0.Beta2 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.Beta2 release of the Arquillian Spring Framework Extension component!

It has been a while since that last Arquillian Spring extension release, but it’s finally here. This release focus more on improving existing features rather then introducing completely new ones.

I would like to thank Jakub Kurlenda and John Ament for helping with this release.

Some of the highlights in this release

Managing the Spring’s ApplicationContext lifecycle

New ways of configuring Spring’s context

Warp Spring extension

Deployer new functionality

Managing the Spring’s ApplicationContext lifecycle

Previous versions had one common drawback, each test were running using a separate instance of Spring’s ApplicationContext. Although the ApplicationContext were destroyed and all of its resources were freed after the test execution, this brought additional overhead for each test. From now on the developer has the control whether he want to create only a single context per test case or to have each test run with a new “clean” context, which in some situation might be handy. By default the context will be created only once, but it can easly be changed by adding the @ContextLifeCycle annotation to the test case.

New ways of configuring Spring’s context

This release also bring a couple of new features to ease the test configuration. First are smart defaults used for configuration. Each @SpringConfiguration annotated test do not need to explicitly define the location of the XML file anymore. If no file has been defined, by default the extension will look for file in classpath with exactly the same name as the class located in the class package. The same goes for @SpringAnnotationConfiguration, which now allow to add a static non final internal class which needs to be marked with @Configuration. The extension will use that class by default when configuring Spring.

Example:

@SpringClientAnnotationConfiguration
public class TestCase {

    @Configuration
    public static class ContextConfiguration {

        @Bean
        public EmployeeService employeeService() {
            return new EmployeeServiceImpl();
        }
    }
}

The last new feature is programmatic creation of the ApplicationContext from within a test. From now on it is possible to create the instance of the Spring ApplicationContext for each test via code. This is done by adding a static factory method to the test which needs to be annotated with @SpringContextConfiguration. The extension will invoke this method prior to test execution (all context lifecycle rules mentioned above also apply here) and use it’s result afterwards.

Example:

@SpringContextConfiguration
public static ApplicationContext contextConfiguration() {

   return new ClassPathXmlApplicationContext(
       new String[]{"classpath:service.xml", "classpath:repository.xml"});
}

Why would this be needed? In some cases you needs to have greater control over the context; for instance at the moment this is the only way to pragmatically set the Spring profiles to use for the test. The other possibility could be integration with other frameworks in which the context should not be managed by the test itself.

Warp Spring extension

The Warp Spring extension has been updated to the latest Alpha 2 release. For consistency with other Warp extensions the SpringMvcResult can be now injected using @ArquillianResource annotation. The custom @SpringResource has been deprecated and might be remove in next releases.

Deployer new functionality

The Spring deployer, which is used for automatic packaging the Spring artifacts and enriching the test deployment, has received some updates. It now allows for importing the dependencies directly from the Maven POM file, and could aid with setting up the deployment. The deployer can be configured in the arquillian.xml file through the spring-deployer section. Additional properties like pomFile allow you to specify the location of the pom file to load; useMavenOffline controls the offline mode of the maven resolver in use, and enableCache controls whether the deployer should cache the artifacts in memory. Finally the excludedArtifacts allow you to exclude artifacts that are unwanted from the deployment

<extension qualifier="spring-deployer">

        <property name="importPomDependencies">true</property>

        <property name="pomFile">src/main/resources/test_pom.xml</property>

        <property name="useMavenOffline">false</property>

        <property name="excludedArtifacts">org.jboss.arquillian:*</property>

        <property name="enableCache">true</property>
</extension>

We look forward to your feedback on this new release on the community forums!

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 Spring Framework Extension
Version 1.0.0.Beta2 view tag
Release date 2013-06-19
Released by Aslak Knutsen
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-service-deployer-spring-common jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-deployer-spring-2.5 jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-deployer-spring-3 jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-integration-spring jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-container-spring jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-integration-spring-inject jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-integration-spring-javaconfig jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-transaction-spring jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-integration-spring-2.5-int-tests jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-service-integration-spring-3-int-tests jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-warp-spring jar javadoc pom

Release notes and resolved issues 16

Improvements

Feature Request
  • ARQ-960 - Provide the way to specify the strategy on instantiting AppllicationContext e.g. each test method or each test case
  • ARQ-1104 - Spring deployer should include all spring artifacts
  • ARQ-1105 - Spring deployer - add maven offline property
  • ARQ-1106 - Spring deployer - allow caching the resolved libraries between deployments
  • ARQ-1108 - Register the spring transaction provider on the client side.
  • ARQ-1134 - Spring deployer - change the implementation of MavenDependencyBuilder.
  • ARQ-1269 - Upgrade Spring MVC integration to use Warp 1.0.0.Alpha2.
  • ARQ-1270 - Upgrade Spring extension to Arquillian Core 1.0.3
  • ARQ-1277 - Allow the SpringMvcResult to be injected through @ArquillianResource.
  • ARQ-1304 - Create test ApplicationContext through factory method.
  • ARQ-1305 - Defaults values for @SpringConfiguration and @SpringAnnotationConfiguration
  • ARQ-1317 - Warp Spring MVC - capture the execution state through HandlerInterceptor
  • ARQ-1358 - Define ApplicationContext life cycle events.
  • ARQ-1408 - Upgrade Spring extension to Arquillian 1.0.4.Final.
Bug
  • ARQ-1079 - SpringEmbeddedApplicationContextProducer testApplicationContext is missing the scope definition.

Thanks to the following list of contributors: Jakub Narloch, Aslak Knutsen, John D. Ament, Jakub Kurlenda

Arquillian Drone Extension 1.2.0.Alpha2 Released

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

The Arquillian team is proud to announce the 1.2.0.Alpha2 release of the Arquillian Drone Extension component!

We’ve please to announce Drone 1.2.0.Alpha2. This release brings you PhantomJS support and an easier model for future extensions.


Significant changes since 1.2.0.Alpha1

Support for PhantomJS

PhantomJS allow you to run headless tests on a real browser. And Drone supports it out of the box.

arquillian.xml
<extension qualifier=“webdriver”>
<property name=“browserCapabilities”>phantomjs</property>
<property name=“phantomjs.binary.path”>/path/to/phantomjs.binary</property>
</extension>
Automatic Augmentation

RemoteWebDriver instances are now automatically augmented.

Discarding cookies for reusable browsers

You can now use reusable browser while ensuring cooking from previous test runs do not affect current test run. The default behavior is to delete the cookies. If you want to preserve previous behavior, you can use the reuseCookies configuration option.

arquillian.xml
<extension qualifier=“webdriver”>
<property name=“reuseCookies”>true</property>
</extension>

This release breaks implementation compatibility with previous Drone releases. You should not be affected by this unless you use Drone combined with other projects that depend on more then just SPI, such as Graphene 2. We are releasing new compatible versions of these projects; such as Graphene 2.0.0.Alpha4.
These changes were done in order to make Drone more reusable by third party projects to avoid similar problems in future.

I’d like to thank everybody involved in this release. You guys make testing a breeze!

We hope that you’ll enjoy the improvements and look forward to hear your feedback in the community forums.

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 Drone Extension
Version 1.2.0.Alpha2 view tag
Release date 2013-04-12
Released by Lukas Fryc
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-drone-bom pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium-depchain pom
  • org.jboss.arquillian.extension » arquillian-drone-webdriver-depchain pom
  • org.jboss.arquillian.extension » arquillian-drone-api jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-spi jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-configuration jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-impl jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium-server jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-webdriver jar javadoc pom

Release notes and resolved issues 11

PhantomJS; Automatic Augmentation; Discarding cookies for reusable browsers

Component Upgrade
  • ARQ-1308 - Update Selenium to 2.30.0
  • ARQ-1310 - Update Arquillian Core in Drone to 1.0.3.Final
  • ARQ-1349 - Drone: upgrade Selenium to 2.31.0 and phantomjsdriver to 1.0.3
Enhancement
  • ARQ-1314 - Better exception message when creating a new instance fails
  • ARQ-1350 - Drone: allow reuse of session even though all capabilities are not serializable
Feature Request
  • ARQ-1177 - Allow browser capabilities to be extensible
  • ARQ-1206 - Add configuration option to delete all cookies on reusable browser instance
  • ARQ-1307 - Support for GhostDriver / PhantomJS
  • ARQ-1351 - Drone: augment RemoteWebDriver instances automatically
  • ARQ-1363 - Drone SPI - provide service type for enhancing a instances instantiated by Drone
  • ARQ-1364 - Drone SPI - add DroneReady event fired when either class or method-level instance is created

Thanks to the following list of contributors: Lukas Fryc, Karel Piwko, Tomas Repel, Jiří Locker, Jan Papoušek, Aslak Knutsen

Graphene 2.0.0.Alpha4 Released

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

The Arquillian team is proud to announce the 2.0.0.Alpha4 release of the Graphene component!

As we are on the way to a first Beta release, we identified a need for sharing some of the recent Graphene improvements:

Highlighted Changes

Guard Improvements and Fixes

Request Guards were polished, extended and hardened. (read more)

Creating Page Fragments Programatically

Page Fragments can now be instantiated not only using dependency injection, but also programatically. (read more)

PhantomJS Support

You can now fully leverage awesomness of headless testing with PhantomJS.

Guarding Programatically Retrieved Elements

Elements retrieved programatically using WebElement#findElement(...) or WebElement#findElements(...) are now guarded against StaleElementReferenceException.

Automatic Inference of Locators

You no longer need to define a locator in simple forms – you can leverage their automatic inference from a injection point name. (read more)

Dependency Injection of SessionStorage and LocalStorage

These resources are now exposed directly via @ArquillianResource.

Dependency Injection of Selenium Resource Parametrized by WebElement

Selenium resources which takes WebElement as an argument in a constructor (e.g. Select) can be injected using FindBy.

Support for FindBys and FindBy(How, String)
 
Improved Integration with Drone

Drone 1.2.0.Alpha2’s new Enhancer API allow us to integrate with Drone seamlessly.

Deprecations

Deprecation of Old Variant of Waiting Fluent API

Graphene.element(...) and Graphene.attribute(...) are now deprecated and they will be removed in an upcoming releases.

Deprecated guardXhr replaced by guardAjax

Not all of us are familiar with abbreviation XHR (XMLHttpRequest). In order to make the API more clear for most of Graphene users, we have deprecated guardXhr and replaced it with guardAjax. guardXhr will be removed in upcoming releases.

Guard Improvements and Fixes

waitForHttp

When an Ajax request is followed by a relocation (HTTP request), guardXhr or guardHttp can’t deterministically wait for an end of a request – in these situations you can use waitForHttp instead.

Testing delayed requests

Guards now waits for a given time interval for a request to start and once the request is started, they wait the another interval for the request to finish.

Bug Fixes

Guards had problems on Android with deterministic waiting for HTTP requests.

Creating Page Fragments Programatically

Till this release, the only option to create a page fragment was injecting it:

@FindBy(...)
MyComponent component;

With Alpha4 we have added the possibility to create a page fragment programatically:

public <T> T getContent(Class<T> clazz) {
    return PageFragmentEnricher.createPageFragment(clazz, root);
}
@Test
public void testTabPanelSwitching() {
    Panel tab3 = tabPanel.switchTo(2);
    ContentOfTab content = tab3.getContent(ContentOfTab.class);
    assertEquals("The tab panel was not switched to third tab correctly!", "Content of the tab 3", content.text.getText());
    
    Panel tab1 = tabPanel.switchTo(0);
    content = tab1.getContent(ContentOfTab.class);
    assertEquals("The tab panel was not switched to first tab correctly!", "Content of the tab 1", content.text.getText());
}

You can find reference usage in this functional test together with an implementation of #getContent(Class<T>).

Automatic Inference of Locators

How many times you have written:

// look for input with a name 'firstname'
@FindBy(name = "firstname")
private WebElement firstname;

You can now simplify your tests to just

@FindBy
private WebElement firstname;

Graphene will automatically use the strategy How.ID_OR_NAME to locate the element by its ID or name.

Since this mechanism uses the strategy pattern, you can overwrite the default strategy for your test suite and therefore find elements by e.g. their class names or even JSF component IDs.

Roadmap

This release is a maintanance release on the way to Beta1.

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 Graphene
Version 2.0.0.Alpha4 view tag
Release date 2013-04-12
Released by Lukas Fryc
Compiled against

Published artifacts org.jboss.arquillian.graphene

  • org.jboss.arquillian.graphene » graphene-parent pom
  • org.jboss.arquillian.graphene » graphene-selenium-parent pom
  • org.jboss.arquillian.graphene » graphene-selenium-api jar javadoc pom
  • org.jboss.arquillian.graphene » graphene-selenium-impl jar javadoc pom
  • org.jboss.arquillian.graphene » graphene-selenium-drone jar javadoc pom
  • org.jboss.arquillian.graphene » graphene-selenium pom
  • org.jboss.arquillian.graphene » graphene-webdriver-parent pom
  • org.jboss.arquillian.graphene » graphene-webdriver-impl jar javadoc pom
  • org.jboss.arquillian.graphene » graphene-webdriver pom
  • org.jboss.arquillian.graphene » graphene-webdriver-spi jar javadoc pom
  • org.jboss.arquillian.graphene » arquillian-graphene pom
  • org.jboss.arquillian.graphene » graphene-component-api jar javadoc pom

Release notes and resolved issues 20

Q1/13: PhantomJS

Enhancement
  • ARQGRA-199 - Provide a way to create Page Fragments dynamically
  • ARQGRA-235 - Automatically infer ID locator from field name annotated just by @FindBy
  • ARQGRA-250 - Shortcut for waiting on element's attribute value
Feature Request
  • ARQGRA-220 - Locating elements with @FindBy(how = How.ID, using = "foobar") not working
  • ARQGRA-247 - Add support for enriching @FindBys annotations
  • ARQGRA-254 - Expose LocalStorage and SessionStorage enrichments directly
  • ARQGRA-258 - Provide injecting classes requiring WebElement in their constructors via @FindBy annotation
  • ARQGRA-259 - Provide timeout setting in fluent API
  • ARQGRA-273 - Intercept WebDriver to return proxies in findElement()/findElements() methods
  • ARQGRA-288 - Remove need for Drone factory wrappers
Bug
  • ARQGRA-257 - Guards are not working with AndroidDriver
  • ARQGRA-262 - Element click with HTTP guard causes WebDriverException: ReferenceError: Graphene is not defined
  • ARQGRA-266 - Waiting for presence of element defined by jQuery selector sometimes causes "IllegalStateException: JQueryPageExtension can't be installed"
  • ARQGRA-272 - Introduced waitForHttp (guardXhr does not work for redirected pages)
  • ARQGRA-289 - JavaScript interfaces fails on Chrome and PhantomJS
  • ARQGRA-290 - testAttributeIsPresent fails on Chrome and PhantomJS
Story
  • ARQGRA-286 - Support PhantomJSDriver in Graphene
Task
  • ARQGRA-168 - Create QUnit tests for Graphene.Page.RequestGuard.js
  • ARQGRA-284 - Rename guardXhr to guardAjax
  • ARQGRA-287 - Deprecate Graphene.element and attribute methods

Thanks to the following list of contributors: Jan Papoušek, Lukas Fryc, Juraj Huska, Jiri Stefek, Andreas Vallen

Arquillian Persistence Extension 1.0.0.Alpha6 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.Alpha6 release of the Arquillian Persistence Extension component!

Arquillian Persistence Extension is back on the release train and the future plan is stronger than ever. The Alpha6 release brings a lot of improvements and fixes thanks to invaluable feedback from the community.

Big thanks go to Marco Cella, Matti Linnanvuori, Bernard Łabno, Tiago Wanke Marques, Karsten Ohme, Vineet Reynolds, Cyrill Ruettimann, Bryan Saunders, Anton Shaykin, Nicolas-Xavier Vanderlinden and Noah White for their feedback which led us to fix some minor annoyances and shortcomings of APE. We are proud of the vibrant and active community around Arquillian!

Some of the highlights in this release

Transaction support has been replaced with Transaction Extension. By default the JTA implementation is included. The only thing you will need to change in your tests is the import sttement for the @Transactional annotation. From now on it’s under org.jboss.arquillian.transaction.api.annotation.

Support for row ordering when comparing datasets. When using Generated ID’s for instance, such as UUID’s, the rows need to be sorted in order for the DbUnit comparison to pass. If they are not ordered, then the assertion is unreliable.

Improved error reporting, including rows comparision and misconfigured entries.

DTD support for flat XML data sets (DBUnit feature).

Proper support for multiple line SQL scripts with comments (ANSI SQL compliant)

We’ve also extended our test suite by adding Apache Derby to our continuous integration pipeline.

Important change: We re-groupped configuration entries arquillian.xml giving them more qualifiers:
persistence – for all basic settings
persistence-dbunit – for DBUnit specific configuration
persistence-script – for SQL related things
Please refer to our confluence documentation for detailed description.

We look forward to hearing your feedback about this release in the community forums!

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 Persistence Extension
Version 1.0.0.Alpha6 view tag
Release date 2013-03-07
Released by Aslak Knutsen
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-persistence-api jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-persistence-impl jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-persistence-integration-tests jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-persistence-integration-tests-testng jar javadoc pom

Release notes and resolved issues 27

Enhancement
  • ARQ-1085 - Unify JPA Cache eviction events with APE
  • ARQ-1215 - Clean slf4j dependency
Feature Request
  • ARQ-1093 - Support for Row Ordering when Comparing Datasets
  • ARQ-1149 - Dataset comparision should collect all differences in the rows instead of failing on the first column
  • ARQ-1157 - Replace Persistence internal Transaction management with Transaction Extension
  • ARQ-1231 - Should observe required object ArquillianDescriptor instead of assuming Lifecycle
  • ARQ-1248 - Add Derby to the testing matrix
  • ARQ-1333 - Should provide more meaningful diagnostic messages
Bug
  • ARQ-1028 - @ShouldMatchDataSet before persist
  • ARQ-1081 - DTD not supported by APE
  • ARQ-1086 - @CleanuUsingScript with phase NONE
  • ARQ-1087 - Wrong dump directory path
  • ARQ-1094 - @ShouldMatchDataSet Not Properly Comparing Datasets
  • ARQ-1100 - Datetime conversion does not work as expected for YAML data sets
  • ARQ-1101 - Exception with nested transaction with MySQL
  • ARQ-1127 - Order of scripts and data sets should be preserved when defined on class level
  • ARQ-1146 - Single statement which spans multiple lines is not handled properly
  • ARQ-1167 - Transactional support from Seam 3 interfere Persistence Extension resulting in ExclusiveTransactionException
  • ARQ-1208 - Multiple line statements are not handled properly
  • ARQ-1299 - Persistence extension throws NPE with empty table DataSets
  • ARQ-1300 - Execute script handler does not properly ignore /* */ and {} ANSI compliant SQL comments
Task
  • ARQ-1342 - Clean up POM
  • ARQ-1343 - Schema creation scripts should be repeatable
Sub-task
  • ARQ-1158 - Extract JTA from APE and replace with Transaction Extension dependency
  • ARQ-1334 - Should inform if table defined for exclusion is not defined in the schema
  • ARQ-1335 - Should inform when non-defined configuration key encountered in arquillian.xml

Thanks to the following list of contributors: Bartosz Majsak, Jakub Narloch, Aslak Knutsen, Vineet Reynolds, Artur Dryomov