IMO the solution to too many tests is to encode more things in the type system. If you can encode constraints like the length of an array in the type system you know it is correct if it compiles, and that is one less run-time test to run.
But more specifically, I usually see the explosion of test code in integration tests where there is heavy setup of entity graphs.