Un objet fictif vous permet de tester uniquement ce que vous écrivez et des détails abstraits tels que l'accès à une ressource (disque, service réseau, etc.). La simulation vous permet ensuite de faire semblant d'être cette ressource externe, ou classe ou autre.
Vous n'avez pas vraiment besoin d'un framework d'objets fictifs, étendez simplement la classe de la fonctionnalité dont vous ne voulez pas vous soucier dans votre test et assurez-vous que la classe que vous testez peut utiliser votre maquette au lieu de la vraie chose ( passez-le via un constructeur ou un setter ou quelque chose comme ça.
La pratique montrera quand les simulations sont utiles et quand elles ne le sont pas.
EDIT : se moquer des ressources est particulièrement important afin que vous n'ayez pas à vous fier à elles pour exister pendant le test, et vous pouvez vous moquer des détails de leur existence et de ce qu'elles répondent (comme la simulation d'une exception FileNotFoundException ou d'un service Web qui manque, ou diverses valeurs de retour possibles d'un service Web)... le tout sans les temps d'accès lents impliqués (la moquerie s'avérera BEAUCOUP plus rapide que l'accès à de telles ressources dans le test).