When formulating assertions, JUnit quickly reaches its limits. The AssertJ and Google Truth libraries offer new possibilities ...
I can't speak for generics as we are using the IBM 1.3 JRE, but we have been using Emma to start doing our JUnit coverage reports. Maybe check Emma out.