changes runTests to take a callback that generates the args to pass to each test