私は、いくつかのパブリック メソッドとプライベート メソッドを持つクラス ライブラリを構築しています。プライベート メソッドの単体テストができるようにしたいと考えています (主に開発中に行いますが、将来のリファクタリングにも役立つ可能性があります)。
これを行う正しい方法は何ですか?
ベストアンサー1
プライベート メソッドを単体テストする場合は、何かが間違っている可能性があります。単体テストは (一般的に) クラスのインターフェイス、つまりパブリック (および保護) メソッドをテストすることを目的としています。もちろん、このソリューションを「ハック」することもできます (メソッドをパブリックにするだけでもかまいません) が、次のことも検討してください。
- テストしたいメソッドが本当にテストする価値がある場合は、それを独自のクラスに移動する価値があるかもしれません。
- プライベート メソッドを呼び出すパブリック メソッドにさらにテストを追加し、プライベート メソッドの機能をテストします。(コメント者が指摘したように、これらのプライベート メソッドの機能が実際にパブリック インターフェイスの一部である場合にのみこれを行う必要があります。実際にユーザーから隠された機能 (つまり、単体テスト) を実行する場合、これはおそらく良くありません)。