New test-drivers inevitably ask two questions: Is it OK to write tests against private member data? What about private member functions? These are two related but distinct topics that both relate to design choices you must make.
The Tell-Don’t-Ask design concept says that you should tell an object to do something and let that object go off and complete its work. If you ask lots of questions of the object, you’re violating Tell-Don’t-Ask. A system consisting of excessive queries to other objects will be entangled and complex. Client C asks an object S for information, does some work that’s possibly a responsibility S could take on, asks another question of S, and so on, creating a tight interaction between C and ...