Re: Unit Testing Frameworks (was Re: Singletons)
On 12/30/2012 9:31 AM, Dave Abrahams wrote:
on Fri Dec 28 2012, Ian Collins <ian-news-AT-this.is.invalid> wrote:
It seems self-evident to me, but I'll try to explain anyway.
* Most singletons are designed not to allow arbitrary lifetime
management at all, so you can only have one during the life of
the executable
* In any case, only one instance of a singleton can exist at a
given time, by definition
* Therefore if you have two tests that need to talk to different
loggers they either must be in separate executables (in the
first case) or at least can't run in separate threads (in the
second case).
What am I missing?
Unit tests normally (in the case of a singleton, nearly always)
FWIW, I wasn't talking about testing the singleton, but about
testing the components that /use/ the singleton.
use mocks for foreign objects required by the tests. I think that
was clear from the examples in this thread using a type called
"MyLogger".
Even if that's true, I don't see how that relates to my points above.
If you're not bother with testing the singleton itself, just use it,
the road is pretty clear. Consider the mother of all singletons in the
C++ system, the free store. Everyone is allowed to use any
memory-related functions and how much does it hurt testability,
including the proposed randomly parallelized one?
I'm yet to hear proposals to smuggle that in via DI too. ;-)
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]