Well, unit tests are a bit of a special case, because if they don't work, then you'll just see it in your debug build, and it's not a big deal to work out why.
But if you're actually putting unit tests into code that you're shipping to customers, then I certainly wouldn't advise using statics for the classes like I've done! My motivation was just to simplify the way that it builds a list of all the available tests, to avoid having to manually maintain a list of them somewhere.
..although having said that, if your unit test classes don't actually contain any members (and there's no reason why they should do, as they should really just create local objects to use when the test runs), then I think it's absolutely safe to do it like I've done.
Likewise, don't get default-constructed strings confused with String::empty. It's perfectly safe to use a default-constructed String anywhere, even in statics.