Le hack est une idée horrible. Arbitrairement la ré-écriture de votre code avec le préprocesseur quand vous allez à la compilation il n'est jamais sage.
Maintenant, comme plusieurs personnes l'ont déjà mentionné, on peut se demander si l'on doit mettre à l'essai des méthodes privées. Mais cela ne couvre pas le cas où vous avez intentionnellement caché des constructeurs pour limiter instantiaton à certaines étendues, ou quelques autres plus ésotérique des cas.
Aussi, vous ne pouvez pas l'ami d'un espace de noms et de "l'amitié" n'est pas hérité en C++ donc, en fonction de votre framework de test unitaire, vous pourriez être en difficulté. Heureusement, si vous utilisez le Boost.De Test, il n'y a de solution élégante à ce problème sous la forme de Montages.
http://www.boost.org/doc/libs/1_52_0/libs/test/doc/html/utf/user-guide/fixture/per-test-case.html
Vous pouvez ami de l'appareil et l'avoir à instancier toutes les instances que vous utilisez dans votre unité de fonctions de test, les déclarant comme de l'électricité statique à l'appareil et à portée de module. Si vous utilisez un espace de noms ne vous inquiétez pas, vous pouvez simplement déclarer votre appareil dans l'espace de noms et vos cas de test à l'extérieur de l'espace de noms, et ensuite utiliser l'opérateur de résolution de portée pour se rendre à la statique des membres.
L' BOOST_FIXTURE_TEST_CASE
macro va prendre soin de l'instanciation et la déchirure en bas de votre appareil pour vous.