never be sure if it's "expected, actual" or
"actual, expected".
It's an interesting point, because the assertj way is precisely solving
this issue with its english-like fluent writing : "Assert that <something>
[is / contains / matches / whatever] <some other thing>". It's quite clear
in this sentence that the subject is <actual>, complement is <expected>.
And you never have to worry about it anymore.
About the testing libraries, if we try to analyse that:
JUnit: can't get rid of it, however the JUnit assertions could eventually
be gradually replaced with the ones of the preferred framework if we want
absolute homogeneity (but do we really want it?)
TestNG: same as above, could be gradually replaced
Mockito: still useful, not overlapping
Testing in Groovy: my guess is that it was interesting to use groovy for on
the fly objects declaration, maybe among other benefits. It seems to suits
quite well for integration test, no?
I haven't found the scala tests yet :)
So the overlapping parts are more on JUnit / TestNG, and Assertj if we come
to add it. But comparing to junit/testng, assertj clearly brings nice
facilities as I described above. IMHO there's no need to rewrite every
tests, adopting a new assertion framework can be done just progressively,
without forcing anybody to adopt it right here right now. It's just giving
some more tools that can be very appreciated some day on a particular
situation.