privateメソッドのUnitTestについて、下記のような扱いがあると思う。 スコープを(例えばprotectedに)拡張する 直接間接を問わず、リフレクションなどを活用してテストする これらに対して、ずっと何か違和感を覚えていた。 実践JUnitでちょっと触れられている箇所があって、自分なりの読み解きで何となく向き合い方が腹落ちしたので書いておく。 UnitTestはメソッドのテストではなく、そのふるまいのテストにより重きが置かれるべき privateメソッドは実装の内部詳細であり、その変更はふるまいに影響をあたえるべきではない 上記の前提を考えると、基本的にはpublicスコープに対してのテストで十分になりえるはず。 そのクラスのふるまいであるなら少なくともパッケージ以上にスコープが(テストのためではなく)拡張されることに違和感はない。 そうでないならば別のクラスに切り出すようなふ