> クラスのプライベートメンバへ外部からアクセスする手段が用意されているので、
これがいかんのよ。

プライベートはあくまでプライベート。プライベートは内部で仕様が変わる。
本来プライベートなのだから自由に変えていいはず。

そこを外部からテストするのはおかしく、内部からテストをするしかないはずなのだ。

で、なんでselftest関数なのかというと、
個々でばらばらで作るんじゃなくてselftestで統一されてれば
コードを書かずともあとはフレームワークやら何やらが
見つけて勝手にテストしてくれるようになるでしょ?