読者です 読者をやめる 読者になる 読者になる

メモ書き

自分が後で見直すためにつけている作業のメモ書きです.それ以上の意味はありません

NUnit で privateメンバを単体テストしたくなったらとかいう話

参考

stackoverflow.com


こんな感じのやり取り:

質問「NUnit 使ってプライベートメソッドをどうやってテストするの? 」

いろんな意見

  • 一般に,ユニットテストはパブリックインタフェースを扱うのであり,ユーザ視点で結果が正しい限り実装はどうでもいいこと
  • 緊急にテストしたいプライベートメンバがあるのなら,分解することを考えるべきだ
  • ユニットテストはクラスに対するものではなくてコードに対するもの.たとえばひとつのパブリックメソッドと10個のプライベートメソッドがあって,パブリックI/Fの結果を得るために10個のプライベートメソッドを使っているとすると10個のプライベートメソッドが意図通りに動いているか確認するすべがない
  • プライベートメソッドは実装の詳細である.ユニットテストを実施するポイントの多くは振る舞いを変えることなく実装のリファクタリングを可能にすることである.もし,プライベートメソッドが複雑になって個別にテストをカバーしたくなった場合,クラスを分離してそのパブリック(または内部)メソッドとすることができ得る.つまり,ロジックの断片がテストの対象となるのに十分進んでいる(advanced)ならば,おそらくそれ自身がクラスの候補でありそれ自身のテストをもつだろう.
  • 基本的にprivateメンバが多くなってきたら,コードをリファクタリングするサイン