司会者注: ここにはすでに39の回答が投稿されています(一部は削除されています)。回答 を投稿する前に、ディスカッションに意味のあるものを追加できるかどうかを検討してください。あなたはたぶん他の誰かがすでに言ったことを繰り返すだけです。
ユニットテストを記述するためだけに、クラスのプライベートメソッドをパブリックにする必要がある場合があります。
通常これは、メソッドにクラス内の他のメソッド間で共有されるロジックが含まれていて、独自にロジックをテストするほうが簡単なためです。または、スレッドの問題を心配せずに同期スレッドで使用されるロジックをテストしたいという別の理由も考えられます。 。
私は本当にそれが好きではないので、他の人が自分でこれをやっているのを見つけますか?個人的には、ボーナスは、クラスの外では実際にサービスを提供しないメソッドを公開することの問題を上回ると思います...
更新
皆様のご回答ありがとうございます、人々の興味をそそられたようです。これはクラスが使用される唯一の方法であり、私はこれに同意するため、一般的なコンセンサスはパブリックAPIを介してテストを行うべきであると考えています。私が上記でこれを実行する2つのケースはまれなケースであり、それを実行することのメリットはそれだけの価値があると思いました。
しかし、誰もがそれが実際に起こるべきではないという指摘を見ることができます。そして、それについてもう少し考えると、テストに対応するためにコードを変更することは悪い考えだと思います。結局、テストはある意味でサポートツールであり、システムを「サポートツールをサポートする」ように変更するのは露骨です。悪い習慣。
@VisibileForTesting
そのようなメソッドを作成するための注釈を提供しprivate
ます。メソッドが存在しない理由が適切に文書化されるように、これを行うことをお勧めします。