2012-03-23 5 views
3

は、パブリックメソッドまたはプライベートメソッドのために書かれたJUnitテストのほとんどですか?あまり時間がないのであれば、どれに集中する必要がありますか?JUnitテストで "public"メソッドまたは "private"メソッドをテストすることに焦点を当てる必要がありますか?

+2

1.テストには常に時間が必要です。あなたがしなければ、それは間違っている。 2.パブリックメソッドからすべてをテストします。 – zengr

+2

これはテスト方法の質問ですので、おそらくhttp://programmers.stackexchange.com/に所属しています。 – tjdett

+0

完全なカバレッジを得るためにプライベートメソッドをテストする必要がある場合は、リファクタリングする必要があります。 – Synesso

答えて

4

APIの一部を構成するものすべてをテストする必要があります。リフレクションを使用している場合を除いて、これはpublic/protectedおよびpackageレベルのメソッドを意味します。

明らかに、これは意見です。しかしそれは経験に基づくものです。私の意見をさらに聞かせてください。

理想的には、テスト駆動開発を実践するのが理想的です。この練習あなたには:

  1. は、彼らにあなたが願い持っているために、試験対象の公開方法を含め、最初のテストを書きます。これは有用なAPIを考案するのに役立ちます。
  2. 次に、テストに合格するコードを書くだけです。これにより、100%カバレッジと無関係なコードが残されます。
  3. 次にリファクタリングします。

リファクタリング段階になるまでは、おそらくプライベートメソッドもありません。

0

テストの目的によって異なります。 理想的には、すべてを100%カバレッジでテストしたいと考えています。

+0

申し訳ありませんが、100%LOCカバレッジは実際にテストするには費用対効果の高い方法ではありません。クラスがそれが想定していることを行うことを保証するものではありません。しかし、それは誤った安全感をもたらす可能性があります。 –

+0

これは、ユーザーインターフェースを備えた現実のアプリケーションではほとんど不可能です。私はあなたの目標を高く設定します。 – dbrin

1

クラスの動作をテストします。パブリックメソッドから開始します。 をカバーすると、オブジェクトのすべての状態がプライベートメソッドをカバーする可能性が高くなります。 100%状態カバレッジを目指す(単にマーク。実用的な例では、実際には達成できない)

+0

私はこの回答に賞金を与えます。もっと多くの人がこのように思ってほしいです。テストは、クラスが要件を満たしているかどうかをチェックすることです。あなたが持っている方法についてではありません。メソッドを構築してテストする場合は、すでに知っている機能のテストを書くリスクがあります。あなたが必要とする機能のテストを書くのではなく、 –

+0

私は約束した賞金100点を獲得しました。この強力な答えは、方法ではなく、行動をテストすべきであることを強調しています。 100%州のカバレッジ(これは優れている)を助言する。 100%LOCカバレッジ(これは経済的で無意味です)ではありません。長年のキャリアの中で私が遭遇した開発者の多くは、ユニットテストに対するJayanの姿勢を持っていたと思います。 –

+0

@David Wallace:ありがとう - 「州のカバレッジ」にストレスを加えました。 – Jayan

0

私はあなたが言われていることを、周りに浮いプライベートメソッドの全体の多くを見に行くされている疑い、彼らが表示されます関連する変数が非常に特殊な状況の外部/外部で修正されるべきではない方法。つまり、公共と民間の主な違いはアクセシビリティです。プライベートはクラス内でのみアクセスできますが、パブリックはクラス外でアクセスできます。

関連する問題