2010-11-29 2 views
6

テスト駆動型開発を理解しています。私はアプリケーションのユーザ登録モジュールに対して以下の要件を持っています。ユニットテストの決定としないこと

  1. システムは、姓、電子メールアドレスを、ユーザーのファーストネームをキャプチャする必要がありますし、必要に応じて、住所
  2. 、姓と名は、姓と名、電子メールアドレス
  3. 空でないかもしれません
  4. アルファベットでなければなりません有効な住所でなければならず、必須です。
  5. 郵便番号は任意です。

上記をjavaで実装する。私は、次のコードを書かれている:

  1. 上記のフィールドを含み、対応するゲッターとセッターを備えたJavaビーン
  2. 上記フィールドの
  3. 検証注釈
  4. ユーザ
  5. ユーザーインターフェースを保存するためのDAOユーザーの詳細を入力します。

質問:上記のコードのうち、単体テストでカバーするのはどれですか?すなわち、Beanのゲッターおよびセッター、検証注釈の存在、ユーザーを保存するDAOの能力、UI内の関連するフォーム要素の存在などである。

+0

これに適切な技術(Javaなど)でタグを付けてください。 – RPM1984

+4

@ RPM1984:なぜですか?質問は単体テストとTDDについては明らかですが、回答は他の言語にも同様に適用されます。 –

+0

@Platinum Azure - "should I/shouldnt i"の面では、私は同意するでしょう。しかし、実際の実装はテクノロジとは大きく異なります(UIテストなど)。しかし、これは方法についてではないと思うので、私は声明を取り下げる。 – RPM1984

答えて

4

を私は私の理由は「?私はこの間違ってやったことができます」というもののためにテストを書きます。つまり、私が提供した他のライブラリをテストするのは面倒ではありません。

ゲッターとセッター - ほとんど間違いない。私はEclipseを使ってそれらを生成しますが、テストする価値はありません。

検証のための注釈 - 私はそれらが例えばヌルチェックを正しく実装しているかどうかテストするつもりはないが、私は彼らがスズについて言うことを頼っているが、それらの存在をテストするだろう。右のフィールドにはそれらがありますか?私がregexpでそれらを設定した場合、私は正規表現の権利を持っていることをテストします。

別の例として、私はPOJOをHibernateで保存しています。私はSession.save(myObj)が動作しているかどうかチェックしていませんが、トランザクション境界やマッピング設定などすべてのフィールドが保存されているなど、間違っていたことを確認していません。

ユーザーインターフェイスのテストは本当に難しいです。私は何度も "今度は私のもの"と考えました - しかし、フォームよりも複雑なものはありません。私はあきらめます。 MVPのようなパターンを使用すると、ほとんどの計算機をテストするイベントを注入できますが、まだテストされていないUIへの接続はあります。私は通常、それをテストすること、複雑なデータ処理、エラーを起こしやすいと感じることに終わります。

2

私がTDDについて知っていることの1つとして、コードを最初に書くことは決してありません。

最初にテストを作成します。テストが失敗すると、コードを書き込んで生成し、それを修正して元のコードを作成して修正するテストを追加します。

コードカバレッジが100%の場合は最高です。

あなたはTDDで、プロジェクトで開始する必要があります方法についてはウィキペディアを参照してください - http://en.wikipedia.org/wiki/Test-driven_development

+0

質問に記載されているすべてのセクションのテストを書くことをお勧めしますか?ゲッターやセッターを含む?そうでなければ、私の質問は私が何をすべきか、私は単体テストではいけないものでなければなりません。 – joshua

+0

私はあなた自身が書いたコードだけをテストすべきだと付け加えます(あるいは、TDDが示唆するように書くつもりです)。サードパーティのデータアクセスライブラリは、あなたの仕事ではないためテストしないでください(たとえば)。 –

+0

@joshua - http://en.wikipedia.org/wiki/File:Test-driven_development.PNGを見てください。 – Sairam

関連する問題