Transcript
Page 1: JavaCro'14 - Taking testing to its limits – Aleš Justin

Taking testing to its limits

Aleš Justin, Red Hat

http://javacro.org/http://javacro.org/

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

Agenda

• Testing?

• GAE TCK

• JUnit, ShrinkWrap, Arquillian

• Code coverage, reports, CI, …

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

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

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

GAE TCK

• GAE?

• Google App Engine

• JBoss CapeDwarf

• Open source GAE API impl

• Does it work?

• Voila TCK - www.appengine-tck.org

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

JUnit

• Simple as @Test

• Together with Maven Surefire plugin

• Extendable

• @RunWith

• Assert, Assume, @Ignore, …

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

ShrinkWrap

• Binaries abstraction

• No more Ant or Maven assemblies

• Nice and simple, yet powerful API to create *programmatic* deployments

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

Arquillian

• Environment / runtime abstraction

• Proper and easy in-container testing

• “Container” imp

• A ton of existing container impls

• Invocation protocol

• Servlet, JMX, @RunAsClient, etc

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

Arquillian

• Transparent container usage

• Exactly one container impl on classpath

• JUnit, TestNG support

• Extendable

• Drone, Graphene, etc

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

TCK Features

• NOTE — It’s all *generic*

• Not tied to GAE API or TCK

• TODO of moving this into separate project

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

Code coverage

• Display API usage

• Bytecode check

• Fast

• No runtime involved

• Link against source code

• JSP check

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

Reports

• Graphical results presentation

• Pie and XY chart

• Drill-down for more info

• Pushed from TeamCity CI

• Custom push TeamCity plugin

• Endpoints stubs

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

Utils

• Multisuite

• One big deployment

• Environment info and extension

• “Events”

• @WithinNamespace, @UserIsLoggedIn

• Transformers

• Turn plain JUnit test into ARQ test

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

Q&A

[email protected] / @alesj

• www.capedwarf.org

• www.appengine-tck.org

• https://github.com/GoogleCloudPlatform/appengine-tck


Top Related