ペアのゲッターがないクラスでセッターをユニットテストする方法は?
-
09-10-2019 - |
質問
私は、プロパティを持っているクラスのユニットテストを書いています セッターですが、ゲッターはありません.
できるようになりたいです これらのセッターをテストします データを正しく設定していることを確認します。
私の選択肢は次のとおりです。
- ゲッターを書きます これらの機能の場合、それらが正しく設定されているかどうかをテストできるように
- 次のような方法を書きます
testAllSetters()
それらをすべて一度にテストします
しかし、両方のソリューションはそうです 望ましくない テストのためだけに、クラスに不要な機能を追加するためです。
- また、クラスの出力をテストして一般的に正しいことを確認することもできますが、多くの場合、これは私が望むように個々のセッターをテストしません
ペアのゲッターを持っていないクラスでセッターをユニットテストする最良の方法は何ですか?
解決
ここでの問題は、ユニットテストのためにAPIを変更したくないということです。ユニットテストをAPIの別のユーザー/コンシューマーとして検討し始めます。そのライブラリを使用している開発者と同様に、ユニットテストには独自の要件があります。ユニットテストがAPIの消費者として表示されると、それらのゲッターを使用するユーザーが存在し、それらを正当化します。
これがAPIを変更できない場合(たとえば、再利用可能なフレームワークを開発している場合)、ユニットテストを内部にテストし、 InternalsVisibleToAttribute
テストライブラリがコードの内部メソッドにアクセスできるようにするため。
ユニットテストはさておき、ゲッターなしでプロパティを持つことは開発者にとって非常に直感的ではないため、それらのプロパティにゲッターを使用することを検討することをお勧めします。 フレームワーク設計ガイドライン これに反対するルールもあります。
しない セットのみのプロパティまたはプロパティを、ゲッターよりも幅広いアクセシビリティを持つセッターで提供します。
また、それを考慮に入れたいかもしれません。
幸運を。
他のヒント
使用できます privateObject セッターに電話した後、プライベートメンバーが正しく更新されたことを確認するには
セッターにはロジックがありますか?
はい:ゲッターを開いてください。 Java:保護され、同じパッケージでユニットテストを受けています。 C#:InternalsVisibletoattribute。
いいえ:セッターを直接設定しないでください。意味が無い。セッターによるデータセットを使用する方法をテストします。