Testing JavaEE applications using Arquillian by Reza Rahman
description
Transcript of Testing JavaEE applications using Arquillian by Reza Rahman
![Page 1: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/1.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public1
Testing Java EE Applicationsusing ArquillianReza RahmanJava EE/GlassFish [email protected]@reza_rahman
![Page 2: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/2.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public2
Testing, J2EE and Java EE
Testing not addressed well by J2EE Java EE helps enormously by providing a number of enabling features Arquillian takes full advantage of these features Not the only solution, but best-of-breed Developer (unit and integration) testing focus for this talk
– Arquillian can also help with performance, system, etc testing
– Arquillian excels at integration/regression testing
I’ll primarily focus on JUnit, not TestNG– TestNG also supported by Arquillian
![Page 3: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/3.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public4
Java EE Testing Enablers
![Page 4: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/4.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public5
Testing Servlet
JAX-RS 2 client API comes in very handy! HttpUnit, HtmlUnit good tools as well Traditional problem is bootstrapping containers from tests
![Page 5: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/5.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public6
Servlet Testing Demo
https://github.com/m-reza-rahman/testing-javaee
![Page 6: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/6.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public7
Testing JSF 2
JSF 2 project stages invaluable for debugging and testing Warp ideal for complete JSF testing
– Client and server-side tests
Drone/Selenium, Graphene often sufficient
![Page 7: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/7.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public8
JSF 2 Testing Demo
https://github.com/m-reza-rahman/testing-javaee
![Page 8: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/8.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public9
Testing CDI/EJB 3
CDI increases Java EE component model level testability by leaps and bounds
Embedded containers, generic dependency injection, @Alternative, portable extensions, XML deployment descriptors, interceptors enablers
Both mock object based unit testing as well as integration testing is possible
Likely best to stick with integration testing using close to the real runtime environment
![Page 9: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/9.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public10
Testing JPA
Embedded container, CDI and Arquillian integration works well for JPA Consider using embedded databases like Java DB, Derby, HSQL Defining data sources with the application - @DataSourceDefinition You can use JPA 2.1 data loading, schema generation and DBUnit for
better data consistency Tests can use transactions Take advantage of XML overrides
![Page 10: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/10.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public11
CDI, EJB 3, JPA Testing Demo
https://github.com/m-reza-rahman/testing-javaee
![Page 11: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/11.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public12
Testing JAX-RS, WebSocket (and JAX-WS)
You can use JAX-RS, WebSocket and JAX-WS client APIs with JUnit/Arquillian
For more complex cases consider UI based testing tools (e.g. soapUI for REST and SOAP)
![Page 12: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/12.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public13
JAX-RS, WebSocket Testing Demo
https://github.com/m-reza-rahman/testing-javaee
![Page 13: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/13.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public14
Arquillian Supported Containers
Container Support
GlassFish Embedded, Managed, Remote
WildFly, JBoss Embedded, Managed, Remote
Weld SE, Weld EE Embedded
TomEE, OpenEJB, OpenWebBeans Embedded, Managed, Remote
WebLogic Managed, Remote
WebSphere, Liberty Managed, Remote
![Page 14: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/14.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public15
Summary
Robust, end-to-end testing a true reality with modern Java EE EJB 3, JPA 2, CDI, JSF 2, embedded containers, portable extensions,
XML deployment descriptors, client APIs key enablers Range of new and existing tools available to fit your testing
methodology, requirements Arquillian best-of-breed Java EE testing tool Rich set of features, vibrant community Get involved!
![Page 15: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/15.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public16
Learning More
Java EE Tutorials– http://docs.oracle.com/javaee/7/tutorial/doc/home.htm
Arquillian– http://jboss.org/arquillian
The Aquarium– http://blogs.oracle.com/theaquarium
![Page 16: Testing JavaEE applications using Arquillian by Reza Rahman](https://reader033.fdocuments.us/reader033/viewer/2022060201/559a9ea81a28abf1088b464b/html5/thumbnails/16.jpg)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public17