The thread spawning is kind of awkward - I see why you're doing it, though.

Instead of doing this, could you change the JUnitReporter to just accumulate all results in an NSData buffer and then add a method that returns the contents of the buffer?  (I'm assuming that having streaming JUnit results isn't important - am I correct?)