If you're handy with shell scripts, you can do:
git bisect run my_script
my_script should return 1 if tests failed, or 0 if they passed.
Git will then go off and find the commit that broke things.