A little off-topic as you do have a different cyclical LoopSequence
now, but a difference that I find relevant is that this code above
will touch the database every time (first trying to find a country
and second creating one if not present; which could be quite often
if the test framework correctly rolls back the transaction after every
test).
My proposed code explicitly does not touch the database
when there are no create/save steps in the test (which can
be avoided in most business logic tests, if one pays some
attention to it). I started to become sensitive to that, to try to
make my tests and factory designs less dependent on the
persistence layer.
Especially as you mentioned that a "country" will be present
in most factory objects you create, it could be relevant for
performance and for decoupling the tests from the
persistence layer in general ...
HTH,
Peter