If setup() throws an exception, the entire run fails without going through cleanup().