私はまだTDDの概念全体を把握しています。私はプロパティのテストを書く必要がありますか?十分なロジックを含むプロパティのテストのみを書くべきでしょうか?これに関する考えや例は素晴らしいでしょう。テストプロパティを単位にするのは良い方法ですか?
答えて
プライベートフィールドのパブリックゲッターのテストを書くことで、このゲッターがプライベートフィールドを返す以外は何もしない場合にはあまり役に立ちません。しかし、それが何らかのロジックを含んでいたり(あるいは、Int32フィールドをByteに変換するのに失敗するだけの場合)、そのようなプロパティをテストすることは意味をなさないでしょう。
okだから、範囲を確認したら、テストを書くように言われますか? – hoakey
範囲をどのくらい正確に確認するかによって異なります。範囲チェックが失敗する可能性がある場合(範囲外のインデックス、NULLポインタ例外など)、テストを作成します。あなたのコード:) –
テストとして考える代わりに、誰かがあなたのコードをどのように使用できるかの例として、各テストを考えてみてください。
プロパティをテストするだけでなく、プロパティの値が異なるときに変更される動作について考え、それぞれの意味のあるコンテキストでクラスの動作の例を挙げます。
本当に単なるデータプロパティの場合は、検査によって、または自動受諾テストで、または手動で、テスターのヘルプによってテストできます。それ以外の場合は、各メソッドまたは各プロパティのテストについて心配する必要はありません。コードをどのように使用できるか、またどのように動作させるかを示してください。
私は通常、アクセサのjunitテストを記述します。カバレッジ統計をきれいに保つことを除いて、書かれているときはそれほど多くはありません。しかし、後で誰かが "十分なロジック"を生産コードに追加した場合、テストはすでに間違いを犯すために適切な位置に置かれます。
ゲッターから返された値をチェックするテストを書くのも瞬間です。
合理的な失敗の可能性があるものをテストします。get/set以外のロジックがないプロパティをテストすることによって、余計な信頼を得ることはありません。
私が念頭に置いておくべきことは、値の範囲、すなわち> 6 <12をチェックすることです。この些細な事柄が良い習慣を追求してテストされるべきか、これは細かいものとみなされるべきか? – hoakey
あなたは "プロパティ"をテストしていませんが、特定のロジックをテストしています/要件が満たされているようです。それは何かがそれを壊すまで些細なことです。 –
「きめ細かい」というようなものはありません。要点は、常にプロジェクトの堅牢性の向上とテストライティングのバランスをとることです。名目上「int」であるが実際にそのタイプの部分範囲に限定されたプロパティは、非常に特殊で壊れやすいものであり、徹底的なテストによって絶対に裏付けされるべきである。 –
TDDとユニットテストは「先を見てください」と考えると、あなたのクラスの公開署名になると感じるような方法でテストを書くことができます。
簡単な経験則TDDを実行するときに使用します。常に失敗するテストを書きます。
最初にテストが失敗した場合、それはTDDの良いテストです。何かがまだ実装されていないか、実装されていないことを意味します。その後、コードを変更して合格させることができます。最初に成功したテストは悪いテストです。あなたがテストを書く間違いをしたか、テストしているものがすでに働いているので、成功したかどうかは分かりません。
プロパティを使用してテストエラーを生成できる場合は、それらのプロパティのテストを記述します。典型的には、セッターやゲッターを実装する前にテストを書くことから始めるべきです。実装されていないセッターやゲッターは些細なものに見えるかもしれませんが、テストは失敗します。そして、なぜ、がテスト失敗によってになるのでなければ、セッターやゲッターでもコードの行を書くことはできますか?
その他の種類のテストは、APIを使用する方法を示すドキュメントとしてのテストと同様に、非常に便利で優れたアジャイルなプラクティスですが、TDDではありません。 TDDは、を積極的にしようとしています。その後、機能テストを実行し、単体テストを十分に強く押しても、統合やシステムに問題がない場合は、すべて正常でなければなりません。
- 1. ファイルサイズをバイト単位で保存する最も良い方法は?
- 2. C++でリアルタイムをミリ秒単位で見つけるには良い方法はありますか?
- 3. Rails - 測定単位をデータベース列と関連付けるには良い方法ですか?
- 4. オプションが多すぎるため、ビット単位の比較に代わる良い方法はありますか?
- 5. テストプロパティは
- 6. 行単位ではなく文単位でファイルをdiffする方法はありますか?
- 7. は単位のためにカリー化関数内で部分的に代替引数をするための最良の方法は何単位
- 8. 複数の質問の投票結果をユーザー単位で保存する最も良い方法は?
- 9. scala lazy val:ガベージコレクタで簡単に行ける良い方法は?
- 10. event_calendarプラグインを月単位で代わりに週単位で表示する方法を変更するにはどうすればよいですか?
- 11. LaTeXのフォントサイズをミリメートル単位で設定する方法は?
- 12. イメージサイズをピクセル単位でWPFで設定する方法は?
- 13. Androidでディスプレイサイズをインチ単位で取得する方法は?
- 14. Dartの単体テストを作成する最良の方法は何ですか?
- 15. ドメイン単位で 'inspect要素'を保存する方法は?
- 16. 時間単位でデータを集計する方法は?
- 17. マージンをミリメートル単位で設定する方法は?
- 18. バイナリ(100)にビット単位でORする方法はありますか?
- 19. データテーブルに列単位で値グループを追加する方法
- 20. Web SQLデータベースに行単位でテキストファイルを挿入する方法
- 21. knockout.jsでいくつかの変更を「単位」としてトリガーする方法
- 22. PHPでクラスをオートロードするのは良い方法ですか?
- 23. Zend_db_tableは良い方法ですか?
- 24. filter_varは良い方法ですか?
- 25. wwwサブドメインは良い方法ですか?
- 26. Oracleで週単位のデータを取得する方法
- 27. 月単位でmysqlの行を取得する方法
- 28. Javaでビットシフト、ビット単位の操作を複製する方法
- 29. 時間単位でソートする適切な方法は何ですか?
- 30. 最終的にソースの2つのディレクトリをマージする簡単/良い方法は何ですか?
プロパティの意味を詳しく説明できますか?論理を持つプロパティは何ですか?原則として ;もし、あるメソッドが間違っているロジックを含んでいれば、それは単体テストの価値があるのですが、単体テストの作成には時間がかかりますか(通常はユニットテストで時間が節約できますが、これには) – JohnSmith
プロパティを持つことはまったく良い習慣ではありません。メソッドが何もしない場合、それはなぜ存在するのですか?なぜ、他のクラスはフィールド値を使ってこのクラスにフィールド値を要求しますか? http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.htmlを読んでください - ゲッターとセッターは普遍的に悪ではありませんが、彼らはひどく乱用されています。何かがとても単純かどうかはテストされるべきではなく、何かがとても単純であるかどうかを尋ねるのは、存在してはいけないということです。 –
Tom @それは多少議論の余地があり、カプセル化の面で飛んでいるようです。あなたは本当に小道具を持たないことを主張していますか、あるいは単にテストに関して言及していますか? – hoakey