I agree that the try-catch way is ugly, but I don't want to force this code to depend on Java 8 when K isn't using Java 8 yet. And using assertRaises without a lambda would just be ugly.

I don't really know what else to do here. Standard practice for unit tests is one test class per class in the implementation. There's a lot to test. I can break some of it into further methods, if you think I should, but honestly I don't see that there's a huge benefit. Is there a reason you think this needs to change, other than the purely stylistic?