JavaCro'14 - Taking testing to its limits – Aleš Justin


Published on

Google App Engine (GAE) is a popular PaaS offering. While its scalable and reliable environment is hidden behind custom API, this makes GAE apps hard to port over to other non-GAE environments. What if one could implement such similar environment? And you could simply move your GAE application’s .war file to this new environment and it would just work? But the question we need to ask ourselves first, how do we know that such alternative environment works in the first place? Java EE has had its Technology Compatibility Kit (TCK) from day one. This time we’ll introduce you to GAE TCK and show you how to run it against an alternative JBoss CapeDwarf GAE API implementation. The GAE TCK is built completely on open source software, and it is a collaboration between Red Hat and Google on making the GAE API and its implementations better. The goal is not just to run the tests, but also engage users and developers with a bunch of exciting extensions that range from cool html reporting to bytecode manipulation of external tests.
If you care about GAE, testing, Arquillian, ShrinkWrap, this is the session not to miss!

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

JavaCro'14 - Taking testing to its limits – Aleš Justin

  1. 1. Taking testing to its limits Aleš Justin, Red Hat
  2. 2. Agenda • Testing? • GAE TCK • JUnit, ShrinkWrap,Arquillian • Code coverage, reports, CI, …
  3. 3. Testing? • Do you test? • Never enough time • Hard to test • “If there is no test, it doesn’t work” • ~50% test code • New frameworks to actually test
  4. 4. GAE TCK • GAE? • Google App Engine • JBoss CapeDwarf • Open source GAE API impl • Does it work? • Voila TCK -
  5. 5. JUnit • Simple as @Test • Together with Maven Surefire plugin • Extendable • @RunWith • Assert,Assume, @Ignore, …
  6. 6. ShrinkWrap • Binaries abstraction • No more Ant or Maven assemblies • Nice and simple, yet powerful API to create *programmatic* deployments
  7. 7. Arquillian • Environment / runtime abstraction • Proper and easy in-container testing • “Container” imp • A ton of existing container impls • Invocation protocol • Servlet, JMX, @RunAsClient, etc
  8. 8. Arquillian • Transparent container usage • Exactly one container impl on classpath • JUnit,TestNG support • Extendable • Drone, Graphene, etc
  9. 9. TCK Features • NOTE — It’s all *generic* • Not tied to GAE API or TCK • TODO of moving this into separate project
  10. 10. Code coverage • Display API usage • Bytecode check • Fast • No runtime involved • Link against source code • JSP check
  11. 11. Reports • Graphical results presentation • Pie and XY chart • Drill-down for more info • Pushed from TeamCity CI • Custom push TeamCity plugin • Endpoints stubs
  12. 12. Utils • Multisuite • One big deployment • Environment info and extension • “Events” • @WithinNamespace, @UserIsLoggedIn • Transformers • Turn plain JUnit test into ARQ test
  13. 13. Q&A • / @alesj • • • appengine-tck