2009-04-20 20 views
1

ユニットテスト、方法、またはシナリオでテストするものは?単体テスト、方法、またはシナリオで何をテストするのですか?

各メソッドをテストする場合は、テストケースの最小限の設定が必要です。

テストする場合、テストケースのために必要な設定が巨大である、他のメソッドを呼び出す方法。個々のメソッドの単体テストがすでに存在する場合は、それらを使用しているこのメソッドのために記述する理由は何ですか?

しかし、それはまた、テストされるべき機能の少しを持っています。また、コードカバレッジツールはカバレッジパーセンテージについて文句を言うでしょう。

実用的な入力を提供してください。

+0

その質問の重複ではなく、私が欲しいものに答えることではありません。質問をお読みください。たぶん件名を改訂する必要があるかもしれません。 –

+0

私は、あなたの質問と、オリジナルとして特定された質問との違いを見ることができません。 –

答えて

3

のメソッドを呼び出すメソッドをテストする場合は、 テストケースで必要なセットアップが巨大です。 の単体テストの場合、個々のメソッドはすでに ですが、それを使用するこの メソッドのために書き込む理由は何ですか?

このメソッドは、間違ったパラメータで、または間違ったシーケンスで基本メソッドを呼び出すことがあるか、戻り値で間違ったことをする可能性があるためです。私の経験で

、自己完結型の方法でエラーの可能性は、彼らと、そのような「グルーコード」の間の相互作用に比べて、通常はかなり小さいです。あなたは完全に孤立して各クラスの動作をテスト

「クラシック」のユニットテストは、素敵な概念であるが、実際には、このシナリオでは、すべてが共通または有用ではありません。それは、モジュール性と(その意味での)テスト容易性のためにコードを設計するためにどれほど注意が払われたかにかかっていますが、すべてを達成することは決して不可能です。

2

次ユニットテスト方法、可能な実行経路ごとに一つのテストケースを有します。

ユニットテストの典型的な構造アレンジ-ACTアサート(トリプルAさん)です:

  • 整理 - あなたがテストしたい場合のための環境を作成(これはスイートのセットアップで行うことができますかテストケース、またはその両方)
  • 法に - テストケースは、テスト対象のメソッドを呼び出します
  • アサート - テスト対象のメソッドを検証するためには、過度のセットアップをする必要があります

を行うことになっているものでしたたとえば、あなたのクラスが大きすぎるか、あまりにも多くのことをするなど、あなたがあなたのデザインを見なければならないという指示。 Excessive setupはアンチパターンです。

あなたがテストしているクラスを分離するmock objectsを使用することができます。

2

ナンバーワンのユニットテストのルールは次のとおりです。

のみテストを一度に一つのこと!

これは意味:あなたもこの方法をテストしていない、あなたは、単一の条件の下での方法の一つの側面をテストします。したがって、同じメソッドに対していくつかのテストを思いつきます。

単離は良い単体テストの鍵です。依存関係を模倣する必要があります(例えば、RhinoMocksを使用して)。最初は複雑に見えますが、長期的には管理と保守がはるかに容易です。テストで少量のコードしかテストしないように、できるだけ些細なテストを行い、メンテナンス可能なテストを行います。

関連する問題