Yep - I've done this sort of thing, and not just with tests. The trouble is that pretty soon I found myself nesting abstract classes and interfaces inside the nested classes, and then nesting more inside those, and then... well it ends up with the outermost class simply becoming a sort of super-package if you follow the process to its logical end. I think it reflects that the notion of "package" (at least as done in Java) has historically been a very weak one, and to some degree still is.