@kasper.kondzielski looks interesting. spek is much more than just a runner/test engine(this is basically what I wrote in the first iteration). It has a discovery engine of its own, well defined lifecycle. It is really extensible and support a lot of cases such as custom class loader. In my framework I just hacked all this. Figuring out all this needs substantial effort and was a duplication. The biggest downside of spek is that there is no runtime representation (junit has java.lang.reflect.method) and the speks in the same class uses the same instance. Tests are not isolated but there are workarounds such as memoized or proper cleanup/setup.