You're probably joking, but if you use a real-time linter, maybe you could run tests whenever the file you're editing has no errors.
You might even try to limit which tests to run based on the test coverage (from previous runs) of the changed functions or statements.
And then there's also ideas like LightTable's inline evaluation [1].