私たちは職場で新しいAPIを開発しています。私の同僚と私は内部クラスがユニットテストされるべきかどうかに関して異なった意見を持っています。ユニットテストを含め、あなたの完全なコードをカバーすることができるはずパブリッククラス/メソッドに対してのみ 内部クラスをユニットテストする必要がありますか?
- をテストないユニットのために私の同僚で与え
ポイントパブリックAPI自体を介した内部クラス内部クラスがパブリックインターフェイス経由でテストされていない場合、テストケースが見つからないか、不要なコードが見つかったことを意味します。
- 内部クラスの単体テストを記述すると、重複したテストが行われたり、必要のないコードを強制的に作成することがあります。ユニットテストを通じて完全なコードをカバーの内部クラス
- のテストユニットの賛成で私が与え
ポイントが唯一の公共のクラスは非現実的/難しいかもしれません。内部クラスの単体テストを書くことは、少なくとも自分の世界で正しく動作することを保証し、アプリケーション全体の正確性をテストするために統合テストを行うことができます。
- ユニットテストに冗長性がある場合でも、トップレベルにテストケースがない場合よりも優れています。
- 内部クラスは周囲に公開されているため、それらを個別にテストする必要があります。パブリッククラスが1つと内部クラスが100つしかない場合は、パブリックインターフェイスを介してすべてのシナリオをカバーすることは非常に困難です。
オンラインで検索しましたが、これに関するベストプラクティスや標準的な意見はないようです。何が良いアプローチであると思いますか? Javaの人々に
注:「内部は、」アセンブリへのクラスの可視性を制限し、C#でのキーワードです。クラスはパッケージ/アセンブリの外部からアクセスできません。プライベートクラスと同等ではありません。
パブリッククラスとメソッドに対する包括的な単体テストが十分であることは間違いありませんが、実際には単体テストが完全に包括的になることはめったにありません。実際、Halting Problemによって、単体テストが包括的であることを保証することはできません。内部クラスとメソッドに対するユニットテストは、潜在的な問題を抱えていることをさらに自信を持って提供します。 –
あまりにも広すぎる/意見がSOに基づいています。この質問のいくつかの形式は既に[programmers.se]で回答/議論されている可能性があります。 –
@AlexeiLevenkov SOは意見に基づく質問ではありません。これをプログラマーに移すことはできますか? Btw、私はこの正確なトピックの周りに議論を見つけることができませんでした。 –