JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko
JavaCro'14 - Taking testing to its limits – Aleš Justin
-
Upload
hujak-hrvatska-udruga-java-korisnika-croatian-java-user-association -
Category
Technology
-
view
902 -
download
0
description
Transcript of JavaCro'14 - Taking testing to its limits – Aleš Justin
Taking testing to its limits
Aleš Justin, Red Hat
http://javacro.org/http://javacro.org/
Agenda
• Testing?
• GAE TCK
• JUnit, ShrinkWrap, Arquillian
• Code coverage, reports, CI, …
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
GAE TCK
• GAE?
• Google App Engine
• JBoss CapeDwarf
• Open source GAE API impl
• Does it work?
• Voila TCK - www.appengine-tck.org
JUnit
• Simple as @Test
• Together with Maven Surefire plugin
• Extendable
• @RunWith
• Assert, Assume, @Ignore, …
ShrinkWrap
• Binaries abstraction
• No more Ant or Maven assemblies
• Nice and simple, yet powerful API to create *programmatic* deployments
Arquillian
• Environment / runtime abstraction
• Proper and easy in-container testing
• “Container” imp
• A ton of existing container impls
• Invocation protocol
• Servlet, JMX, @RunAsClient, etc
Arquillian
• Transparent container usage
• Exactly one container impl on classpath
• JUnit, TestNG support
• Extendable
• Drone, Graphene, etc
TCK Features
• NOTE — It’s all *generic*
• Not tied to GAE API or TCK
• TODO of moving this into separate project
Code coverage
• Display API usage
• Bytecode check
• Fast
• No runtime involved
• Link against source code
• JSP check
Reports
• Graphical results presentation
• Pie and XY chart
• Drill-down for more info
• Pushed from TeamCity CI
• Custom push TeamCity plugin
• Endpoints stubs
Utils
• Multisuite
• One big deployment
• Environment info and extension
• “Events”
• @WithinNamespace, @UserIsLoggedIn
• Transformers
• Turn plain JUnit test into ARQ test
Q&A
• [email protected] / @alesj
• www.capedwarf.org
• www.appengine-tck.org
• https://github.com/GoogleCloudPlatform/appengine-tck