I like Play 2. It’s simply the best thing that happened on the JVM since, well, Play 1 :)
One thing bothers me though: testing is still a bit of a PITA (at least in Java). Sure, Play 2 has webdriver support, you don’t have to extend UnitTest
and FunctionalTest
anymore and you can unit-test templates. But, instead of extending base test classes I have to call a bunch of static utility methods on the play.test.Helpers
class.
For example, to write a test that runs inside an application (i.e. has access to its environment), I have to write the following:
In his excellent blog post, Matthieu Guillermin (@mguillermin) shows a solution for this problem (amongs others) by creating an abstract base class that contains the boilerplate code. This works very well, but I prefer composition over inheritance, so I’m using a custom JUnit runner for this.
Then, you can use this runner in an @runWith
annotation, and just write your test code without wrapping it in a Runnable
, like so:
Until next time!