Do you really care about Stub vs Mock?
I've argued in the past that this theoretical discussion is utterly useless. In my experience you need slightly different things from your test doubles at different times and depending on the scenarios and what you care about testing in a particular test.
If you're not using any mock/stub framework, you're
typically creating manual test aids that morph (so that you
can reuse them) as your tests evolve, and end up
encompassing a mixture of a fake (i.e. you might put in an
in-memory implementation), a stub (flags to tell you whether
given members were called) and a mock (you might provide
delegates to execute when members are executed, so that you
can throw/callback/whatever). I've done this countless times
before jumping to a framework/library to help me with this,
and I know this is the
...