SlideShare a Scribd company logo
Throwing Complexity Over the Wall:
 Rapid Development for Enterprise Java




 Dan Allen              Andrew Rubinger
 JBoss, by Red Hat      JBoss, by Red Hat
   mojavelinux            ALRubinger
Agenda                                        #arquillian

    ●   Enterprise software development challenges
    ●   Component models as a solution
    ●   Tools that help you develop & test with confidence
         ●   ShrinkWrap - Skip the build
         ●   Arquillian - Test in-container
    ●   Demo, demo, demo
    ●   Arquillian's interchangeable parts
    ●   Q & A (or more demos)



2
General categorization of software

    ●   Core concerns
    ●   Cross-cutting concerns
    ●   Plumbing




3
What should you code?

    ●   Core concerns
        ●   Business logic
        ●   Domain-specific
    ●   Why?
        ●   Nothing can do this for you
        ●   It's what you are paid to do
        ●   It's a good investment of time
        ●   You get to 100% done sooner




4
What should you avoid?

    ●   “Conceptual weight”
         ●   Cross-cutting concerns
         ●   Plumbing
    ●   Unnecessary LOC
         ●   Write less = maintain less
         ●   Improve signal-to-noise ratio




5
Components models as a solution

    ●   Component
         ●   Follows standard programming model
         ●   Encapsulates business logic
         ●   Packaged in deployable archive



    ●   Container
         ●   Host process for deployed applications
         ●   Provides services and a runtime for components
         ●   Gives you powerful mechanisms for free
6
So what is Java EE, really?

    A standards-based platform that allows us to write
    business logic as components




7
s ing
               mis
    What's been from Java EE?
               ^




8
A component model
      for your tests




9
Unit tests vs integration tests

 Unit                                Integration
     ●   Attributes                  ●   Attributes
          ●   Fine-grained                ●   Coarse-grained
          ●   Simple                      ●   Complex
          ●   Single API call             ●   Component interactions
     ●   Perception                  ●   Perception
          ●   Fast, fast, fast            ●   Sloooooooow
          ●   Easily run in an IDE        ●   Run in an IDE? How?




10
No tests #fail




11
Common integration testing challenges

     ●   Bootstrap a container environment
     ●   Run a build to create/deploy application archive
     ●   Mock dependent components
     ●   Configure application to use test data source(s)
     ●   Deal with (lack of) classpath isolation
     ●   URLs, host names and ports, oh my!




12
The testing “bandgap”
Complexity ( Mental Effort)




                                                                      Functionality

                                                                      Setup & configuration




                               Unit Tests   Integration Tests   System Tests


13
What if integration testing could be...?

     ●   as easy as writing a unit test
     ●   run in the IDE (incremental builds, debugging, etc)
     ●   ramped up in phases
     ●   portable




14
An in-container approach to integration testing

     1. Start or connect to a container
     2. Package and deploy test case to container
     3. Run test in-container
     4. Capture and report results
     5. Undeploy test archive


      Bring your test to the runtime...

       ...instead of managing the runtime from your test.


15
Reducing enterprise testing to child's play
                      Arquillian's test continuum
Complexity ( Mental Effort)




                                                                          Functionality

                                                                          Setup & configuration




                               Unit Tests       Integration Tests   System Tests


16
How do we get there?




17
Skip the build!
       Test in-container!




18
Step 1: Liberate your tests from the build!

     ●   Builds are laborious
          ●   Add overhead
          ●   Slow down test execution
          ●   Coarse-grained packaging
     ●   Keep it manageable!
          ●   Well-defined “unit”
          ●   Classpath control




19
Project lead: Andrew Lee Rubinger

                                       http://jboss.org/shrinkwrap
     n. a fluent API for creating archives such as JARs, WARs and
     EARs in Java




20
Benefits of ShrinkWrap

     ●   Incremental IDE compilation
          ●   Save and re-run
          ●   Skip the build!
     ●   Simple, fluent API
     ●   Container deployment adapters
     ●   Micro deployments
     ●   Export and debugging




21
Fluent archive creation
     final JavaArchive archive = ShrinkWrap.create(JavaArchive.class, "slsb.jar")
         .addClasses(Greeter.class, GreeterBean.class);
     System.out.println(archive.toString(true));


 Yields output:
     slsb.jar:
     /com/
     /com/acme/
     /com/acme/app/
     /com/acme/app/ejb3/
     /com/acme/app/ejb3/Greeter.class
     /com/acme/app/ejb3/GreeterBean.class




22
Micro deployments

     ●   Deploy components in isolation
     ●   Test one functional unit at a time
     ●   Don't need to wait for full application build/startup
     ●   Incremental integration
          ●   Hand pick components & resources
          ●   No “big bang” integration




23
Build, what build?
     @Deployment
     public static Archive<?> createDeployment() {
       return ShrinkWrap.create(JavaArchive.class)
         .addClasses(Greeter.class, GreeterBean.class);
     }




24
Skip the build!
     @Deployment
     public static Archive<?> createDeployment() {
       return ShrinkWrap.create(JavaArchive.class)
         .addPackage(TemperatureConverter.class.getPackage())
         .addManifestResource(EmptyAsset.INSTANCE, "beans.xml");
     }




25
Step 2: Gut the plumbing!

     ●   Start/connect to container
     ●   Package & deploy archive
     ●   Inject resources
     ●   Test logic
     ●   Cleanup resources
     ●   Undeploy archive
     ●   Stop/disconnect from container




26
Project lead: Aslak Knutsen

                                          http://jboss.org/arquillian
     n. a container-oriented testing framework that enables
     developers to create portable integration tests for enterprise
     applications; manages the lifecycle of a container and enriches,
     deploys and runs tests against it




27
Arquillian project mission




         Make integration testing a breeze!




28
Prove it.
     @RunWith(Arquillian.class)
     public class GreeterTestCase {

         @Deployment
         public static Archive<?> createDeployment() {
           return ShrinkWrap.create(JavaArchive.class)
             .addClasses(Greeter.class, GreeterBean.class);
         }

         @EJB private Greeter greeter;

         @Test
         public void shouldBeAbleToInvokeEJB() throws Exception {
           assertEquals("Hello, Earthlings", greeter.greet("Earthlings"));
         }
     }

29
Prove it.
     @RunWith(Arquillian.class)
     public class GreeterTestCase {

         @Deployment
         public static Archive<?> createDeployment() {
           return ShrinkWrap.create(JavaArchive.class).addClass(Greeter.class)
             .addManifestResource(EmptyAsset.INSTANCE, "beans.xml");
         }

         @Inject Greeter greeter;

         @Test
         public void shouldBeAbleToInvokeManagedBean() throws Exception {
           assertEquals("Hello, Earthlings", greeter.greet("Earthlings"));
         }
     }

30
DEMO!




31
Benefits of Arquillian

     ●   Write less (test) code
     ●   As much or as little “integration” as you need
     ●   Looks like a unit test, but you're in a real environment!
          ●   Easily lookup component to test
          ●   No hesitation when you need a resource
     ●   Run same test in multiple containers
     ●   It's a learning environment




32
33
Supported unit testing frameworks




           JUnit           TestNG
             >= 4.6            >= 5.10




34
Test run modes

     ●   In-container
          ●   Test bundled with @Deployment archive
          ●   Archive deployed to container
          ●   Test runs inside container alongside application code
          ●   Invoke application code directly (same JVM)
     ●   As client
          ●   @Deployment archive is test archive (unmodified)
          ●   Archive deployed to the container
          ●   Test stays back, runs in original test runner
          ●   Interact as a remote client (e.g., HTTP client)

35
Container modes

     ●   Embedded
         ●   Same JVM as test runner
         ●   Test protocol either local or remote
         ●   Lifecycle controlled by Arquillian
     ●   Remote
         ●   Separate JVM from test runner
         ●   Arquillian connects to running container
         ●   Tests executed over remote protocol
     ●   Managed
         ●   Remote with lifecycle management

36
Supported containers

     ●   JBoss AS 5.0 & 5.1 – Managed and remote
     ●   JBoss AS 6 – Managed, remote and embedded
     ●   JBoss JCA – Embedded
     ●   GlassFish 3 – Remote and embedded
     ●   Weld – SE embedded and EE mock embedded
     ●   OpenWebBeans – embedded
     ●   OpenEJB 3.1 – embedded
     ●   OSGi – embedded
     ●   Tomcat 6, Jetty 6.1 and Jetty 7 – embedded
     ●   More on the way...
37
Container SPI, not just for Java EE
     public interface DeployableContainer {

         void setup(Context context, Configuration configuration);

         void start(Context context) throws LifecycleException;

         ContainerMethodExecutor deploy(Context context, Archive<?> archive)
            throws DeploymentException;

         void undeploy(Context context, Archive<?> archive)
            throws DeploymentException;

         void stop(Context context) throws LifecycleException;

     }


38
Power tools: test framework integration

     ●   Test frameworks are services too!
     ●   Extends test component model
     ●   Examples:
          ●   JSFUnit*
          ●   Cobertura*
          ●   Spock*
          ●   Selenium*
          ●   HTTPUnit
          ●   DBUnit

     * available
39
Arquillian...

     ●   is a container-oriented testing framework
     ●   provides a component model for tests
     ●   handles test infrastructure & plumbing
     ●   ships with a set of container implementations
     ●   provides a little bit of magic ;)




40
We're in print!
                                 LOOK INSIDE!




            Enterprise JavaBeans 3.1, Sixth Edition
            O’Reilly - Andrew Lee Rubinger, et al

            http://community.jboss.org/groups/oreillyejb6th

41
Get involved!

     ●   Download us!
          ●   ShrinkWrap - http://jboss.org/shrinkwap
          ●   Arquillian - http://jboss.org/arquillian
     ●   Participate with us!
          ●   Community Space
     ●   Fork us!
     ●   Meet us!
          ●   #jbosstesting channel on irc.freenode.net
     ●   Write for us!
          ●   Share your stories – Blog! Tweet! #arquillian
42
          ●   Document how it works
Emotional Ike




              Now available as a Hudson build plugin!
43
          http://github.com/arquillian/arquillian-extensions
Q & A (or more demos)




http://jboss.org/arquillian
http://jboss.org/shrinkwrap
45
46
47

More Related Content

PDF
JSR-299 (CDI), Weld & the Future of Seam (JavaOne 2010)
PDF
CDI and Weld
PDF
CDI, Weld and the future of Seam
PDF
Moving to Java EE 6 and CDI and away from the clutter
PDF
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
PDF
PL/SQL Development
PDF
Haj 4344-java se 9 and the application server-1
PDF
OSGi & Java EE in GlassFish - Best of both worlds
JSR-299 (CDI), Weld & the Future of Seam (JavaOne 2010)
CDI and Weld
CDI, Weld and the future of Seam
Moving to Java EE 6 and CDI and away from the clutter
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
PL/SQL Development
Haj 4344-java se 9 and the application server-1
OSGi & Java EE in GlassFish - Best of both worlds

What's hot (20)

PDF
Groovy.Tutorial
PDF
groovy
PDF
Cloud Best Practices
PDF
Glidein startup Internals and Glidein configuration - glideinWMS Training Jan...
ODP
Glidein internals
PDF
Dayal rtp q2_07
PPTX
Lesson2 software process_contd2
PDF
Simple Pure Java
PDF
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
PDF
Replication Tips & Trick for SMUG
PPTX
Java Modularity with OSGi
PDF
Replication Tips & Tricks
KEY
Consolidated shared indexes in real time
PDF
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
PDF
Microsoft SQL Server Testing Frameworks
PPTX
Quality on Submit
PDF
Airbus Internship Presentation 2012
PPTX
Top 50 java ee 7 best practices [con5669]
PDF
CFEngine 3
PDF
Adopting Agile Tools & Methods In A Legacy Context
Groovy.Tutorial
groovy
Cloud Best Practices
Glidein startup Internals and Glidein configuration - glideinWMS Training Jan...
Glidein internals
Dayal rtp q2_07
Lesson2 software process_contd2
Simple Pure Java
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Replication Tips & Trick for SMUG
Java Modularity with OSGi
Replication Tips & Tricks
Consolidated shared indexes in real time
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
Microsoft SQL Server Testing Frameworks
Quality on Submit
Airbus Internship Presentation 2012
Top 50 java ee 7 best practices [con5669]
CFEngine 3
Adopting Agile Tools & Methods In A Legacy Context
Ad

Similar to Throwing complexity over the wall: Rapid development for enterprise Java (JavaOne 2010) (20)

PPTX
Software_testing.pptx
PPTX
Arquillian
PDF
Real Java EE Testing with Arquillian and ShrinkWrap
PDF
September 2010 - Arquillian
PPTX
Jakarta EE Test Strategies (2022)
PPT
Arquillian - Integration Testing Made Easy
PDF
Integration testing - A&BP CC
PPTX
Selenium Camp 2012
PPTX
Anatomy of a Build Pipeline
PDF
Alien driven-development
PDF
Arquillian: Effective tests from the client to the server
PDF
Arquillian 소개
PDF
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
PDF
Continuous Enterprise Development In Java Testable Solutions With Arquillian ...
PPTX
2014 Joker - Integration Testing from the Trenches
PDF
Jdc 2010 - Maven, Intelligent Projects
PPTX
Java EE Arquillian Testing with Docker & The Cloud
PDF
Arquillian
PPTX
GeeCON 2012 hurdle run through ejb testing
PDF
Designing Top-Class Test Suites for Web Applications
Software_testing.pptx
Arquillian
Real Java EE Testing with Arquillian and ShrinkWrap
September 2010 - Arquillian
Jakarta EE Test Strategies (2022)
Arquillian - Integration Testing Made Easy
Integration testing - A&BP CC
Selenium Camp 2012
Anatomy of a Build Pipeline
Alien driven-development
Arquillian: Effective tests from the client to the server
Arquillian 소개
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
Continuous Enterprise Development In Java Testable Solutions With Arquillian ...
2014 Joker - Integration Testing from the Trenches
Jdc 2010 - Maven, Intelligent Projects
Java EE Arquillian Testing with Docker & The Cloud
Arquillian
GeeCON 2012 hurdle run through ejb testing
Designing Top-Class Test Suites for Web Applications
Ad

Recently uploaded (20)

PDF
Encapsulation theory and applications.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
KodekX | Application Modernization Development
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Big Data Technologies - Introduction.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Electronic commerce courselecture one. Pdf
Encapsulation theory and applications.pdf
cuic standard and advanced reporting.pdf
KodekX | Application Modernization Development
Mobile App Security Testing_ A Comprehensive Guide.pdf
MYSQL Presentation for SQL database connectivity
Big Data Technologies - Introduction.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Network Security Unit 5.pdf for BCA BBA.
Encapsulation_ Review paper, used for researhc scholars
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectral efficient network and resource selection model in 5G networks
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
NewMind AI Monthly Chronicles - July 2025
Building Integrated photovoltaic BIPV_UPV.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Review of recent advances in non-invasive hemoglobin estimation
Electronic commerce courselecture one. Pdf

Throwing complexity over the wall: Rapid development for enterprise Java (JavaOne 2010)

  • 1. Throwing Complexity Over the Wall: Rapid Development for Enterprise Java Dan Allen Andrew Rubinger JBoss, by Red Hat JBoss, by Red Hat mojavelinux ALRubinger
  • 2. Agenda #arquillian ● Enterprise software development challenges ● Component models as a solution ● Tools that help you develop & test with confidence ● ShrinkWrap - Skip the build ● Arquillian - Test in-container ● Demo, demo, demo ● Arquillian's interchangeable parts ● Q & A (or more demos) 2
  • 3. General categorization of software ● Core concerns ● Cross-cutting concerns ● Plumbing 3
  • 4. What should you code? ● Core concerns ● Business logic ● Domain-specific ● Why? ● Nothing can do this for you ● It's what you are paid to do ● It's a good investment of time ● You get to 100% done sooner 4
  • 5. What should you avoid? ● “Conceptual weight” ● Cross-cutting concerns ● Plumbing ● Unnecessary LOC ● Write less = maintain less ● Improve signal-to-noise ratio 5
  • 6. Components models as a solution ● Component ● Follows standard programming model ● Encapsulates business logic ● Packaged in deployable archive ● Container ● Host process for deployed applications ● Provides services and a runtime for components ● Gives you powerful mechanisms for free 6
  • 7. So what is Java EE, really? A standards-based platform that allows us to write business logic as components 7
  • 8. s ing mis What's been from Java EE? ^ 8
  • 9. A component model for your tests 9
  • 10. Unit tests vs integration tests Unit Integration ● Attributes ● Attributes ● Fine-grained ● Coarse-grained ● Simple ● Complex ● Single API call ● Component interactions ● Perception ● Perception ● Fast, fast, fast ● Sloooooooow ● Easily run in an IDE ● Run in an IDE? How? 10
  • 12. Common integration testing challenges ● Bootstrap a container environment ● Run a build to create/deploy application archive ● Mock dependent components ● Configure application to use test data source(s) ● Deal with (lack of) classpath isolation ● URLs, host names and ports, oh my! 12
  • 13. The testing “bandgap” Complexity ( Mental Effort) Functionality Setup & configuration Unit Tests Integration Tests System Tests 13
  • 14. What if integration testing could be...? ● as easy as writing a unit test ● run in the IDE (incremental builds, debugging, etc) ● ramped up in phases ● portable 14
  • 15. An in-container approach to integration testing 1. Start or connect to a container 2. Package and deploy test case to container 3. Run test in-container 4. Capture and report results 5. Undeploy test archive Bring your test to the runtime... ...instead of managing the runtime from your test. 15
  • 16. Reducing enterprise testing to child's play Arquillian's test continuum Complexity ( Mental Effort) Functionality Setup & configuration Unit Tests Integration Tests System Tests 16
  • 17. How do we get there? 17
  • 18. Skip the build! Test in-container! 18
  • 19. Step 1: Liberate your tests from the build! ● Builds are laborious ● Add overhead ● Slow down test execution ● Coarse-grained packaging ● Keep it manageable! ● Well-defined “unit” ● Classpath control 19
  • 20. Project lead: Andrew Lee Rubinger http://jboss.org/shrinkwrap n. a fluent API for creating archives such as JARs, WARs and EARs in Java 20
  • 21. Benefits of ShrinkWrap ● Incremental IDE compilation ● Save and re-run ● Skip the build! ● Simple, fluent API ● Container deployment adapters ● Micro deployments ● Export and debugging 21
  • 22. Fluent archive creation final JavaArchive archive = ShrinkWrap.create(JavaArchive.class, "slsb.jar") .addClasses(Greeter.class, GreeterBean.class); System.out.println(archive.toString(true)); Yields output: slsb.jar: /com/ /com/acme/ /com/acme/app/ /com/acme/app/ejb3/ /com/acme/app/ejb3/Greeter.class /com/acme/app/ejb3/GreeterBean.class 22
  • 23. Micro deployments ● Deploy components in isolation ● Test one functional unit at a time ● Don't need to wait for full application build/startup ● Incremental integration ● Hand pick components & resources ● No “big bang” integration 23
  • 24. Build, what build? @Deployment public static Archive<?> createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addClasses(Greeter.class, GreeterBean.class); } 24
  • 25. Skip the build! @Deployment public static Archive<?> createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addPackage(TemperatureConverter.class.getPackage()) .addManifestResource(EmptyAsset.INSTANCE, "beans.xml"); } 25
  • 26. Step 2: Gut the plumbing! ● Start/connect to container ● Package & deploy archive ● Inject resources ● Test logic ● Cleanup resources ● Undeploy archive ● Stop/disconnect from container 26
  • 27. Project lead: Aslak Knutsen http://jboss.org/arquillian n. a container-oriented testing framework that enables developers to create portable integration tests for enterprise applications; manages the lifecycle of a container and enriches, deploys and runs tests against it 27
  • 28. Arquillian project mission Make integration testing a breeze! 28
  • 29. Prove it. @RunWith(Arquillian.class) public class GreeterTestCase { @Deployment public static Archive<?> createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addClasses(Greeter.class, GreeterBean.class); } @EJB private Greeter greeter; @Test public void shouldBeAbleToInvokeEJB() throws Exception { assertEquals("Hello, Earthlings", greeter.greet("Earthlings")); } } 29
  • 30. Prove it. @RunWith(Arquillian.class) public class GreeterTestCase { @Deployment public static Archive<?> createDeployment() { return ShrinkWrap.create(JavaArchive.class).addClass(Greeter.class) .addManifestResource(EmptyAsset.INSTANCE, "beans.xml"); } @Inject Greeter greeter; @Test public void shouldBeAbleToInvokeManagedBean() throws Exception { assertEquals("Hello, Earthlings", greeter.greet("Earthlings")); } } 30
  • 32. Benefits of Arquillian ● Write less (test) code ● As much or as little “integration” as you need ● Looks like a unit test, but you're in a real environment! ● Easily lookup component to test ● No hesitation when you need a resource ● Run same test in multiple containers ● It's a learning environment 32
  • 33. 33
  • 34. Supported unit testing frameworks JUnit TestNG >= 4.6 >= 5.10 34
  • 35. Test run modes ● In-container ● Test bundled with @Deployment archive ● Archive deployed to container ● Test runs inside container alongside application code ● Invoke application code directly (same JVM) ● As client ● @Deployment archive is test archive (unmodified) ● Archive deployed to the container ● Test stays back, runs in original test runner ● Interact as a remote client (e.g., HTTP client) 35
  • 36. Container modes ● Embedded ● Same JVM as test runner ● Test protocol either local or remote ● Lifecycle controlled by Arquillian ● Remote ● Separate JVM from test runner ● Arquillian connects to running container ● Tests executed over remote protocol ● Managed ● Remote with lifecycle management 36
  • 37. Supported containers ● JBoss AS 5.0 & 5.1 – Managed and remote ● JBoss AS 6 – Managed, remote and embedded ● JBoss JCA – Embedded ● GlassFish 3 – Remote and embedded ● Weld – SE embedded and EE mock embedded ● OpenWebBeans – embedded ● OpenEJB 3.1 – embedded ● OSGi – embedded ● Tomcat 6, Jetty 6.1 and Jetty 7 – embedded ● More on the way... 37
  • 38. Container SPI, not just for Java EE public interface DeployableContainer { void setup(Context context, Configuration configuration); void start(Context context) throws LifecycleException; ContainerMethodExecutor deploy(Context context, Archive<?> archive) throws DeploymentException; void undeploy(Context context, Archive<?> archive) throws DeploymentException; void stop(Context context) throws LifecycleException; } 38
  • 39. Power tools: test framework integration ● Test frameworks are services too! ● Extends test component model ● Examples: ● JSFUnit* ● Cobertura* ● Spock* ● Selenium* ● HTTPUnit ● DBUnit * available 39
  • 40. Arquillian... ● is a container-oriented testing framework ● provides a component model for tests ● handles test infrastructure & plumbing ● ships with a set of container implementations ● provides a little bit of magic ;) 40
  • 41. We're in print! LOOK INSIDE! Enterprise JavaBeans 3.1, Sixth Edition O’Reilly - Andrew Lee Rubinger, et al http://community.jboss.org/groups/oreillyejb6th 41
  • 42. Get involved! ● Download us! ● ShrinkWrap - http://jboss.org/shrinkwap ● Arquillian - http://jboss.org/arquillian ● Participate with us! ● Community Space ● Fork us! ● Meet us! ● #jbosstesting channel on irc.freenode.net ● Write for us! ● Share your stories – Blog! Tweet! #arquillian 42 ● Document how it works
  • 43. Emotional Ike Now available as a Hudson build plugin! 43 http://github.com/arquillian/arquillian-extensions
  • 44. Q & A (or more demos) http://jboss.org/arquillian http://jboss.org/shrinkwrap
  • 45. 45
  • 46. 46
  • 47. 47