質問

私はこれを面白いのを見ました ユニットテストに関するYouTubeビデオ (それは、良いユニットテストをしていないために彼のチームを噛んで偽物の字幕を持つヒトラーです - ユーモアが損なわれているなら、それをスキップします)スタブが丸く批判されます。しかし、私はスタブの何が悪いのかわかりません。

私はモッキングフレームワークを使用し始めていませんが、それを使用しないことで痛みを感じ始めていません。

私は世界のために、いつか痛いです、 模擬の代わりに手書きのスタブと偽物を選んだ(ラノモックなど)? (ファウラーの分類法を使用)

モックと手書きのスタブを選ぶことについての考慮事項は何ですか?

役に立ちましたか?

解決

スタブには何の問題もありません。スタブの余地、模擬...そしてスパイがあります。すべてが「テストダブル」ですが、で説明されているように異なる目的があります モックやスタブはスパイではありません:

...]先に進む前に、ここで使用されているいくつかの用語を明確にして定義したいと思います。 Xunit Patterns Book.

  • ダミーオブジェクトは、テスト中のシステムに渡されたプレースホルダーオブジェクトですが、使用されていません。
  • テストスタブは、間接的な入力でテスト中のシステムを提供します
  • テストスパイは、テスト中のシステムが正しい間接出力を実行したことを確認する方法を提供します
  • モックオブジェクトは、間接入力と間接出力を検証する方法の両方を備えたテスト中のシステムを提供します

...]そして、あなたはこの便利なチャートにあなたの決定を導くことができます:

alt text

PS: Mockito-ブロック上の新しいモックフレームワーク 読む価値もあります。

他のヒント

私は次の用語を使用します(ユニットテストの芸術の著者であるRoy Osheroveによって導入):

a aと呼ばれます スタブ そのようなパラメーターとそのようなパラメーターでメソッドが呼び出された場合に備えて、何かを偽造するようにそれを指示する場合。しかし、そのような呼び出しが実際に行われたか、まさにn回行われたことを確認した場合、そのような偽物は モック. 。要するに。偽物は、その上にverify()を呼び出してから、それが模擬になる場合を除き、スタブです。

明らかに、場合によってはスタブを使用し、他の場合はモックを使用する必要があります。したがって、スタブを丸く批判することはおそらく間違っている可能性が高く、スタブのみを使用することもおそらく間違っています。

モッキングフレームワークの使用を開始していない場合(代替用語: 分離フレームワーク)、それらに注意して、オプションを頻繁に再評価する必要があります。手動のモックからNMOCK2、MOQに非常に迅速に行きました。これが面白いです 世論調査 彼らが使用しているものを示すプログラマーの。手動の模擬/スタブは少数派ですが、それほど珍しいことではありません。

模擬は投げるのがはるかに簡単です。それらはクラスの実際のインスタンスであり、最小限のボイラープレートを使用して、あらゆる方法のアクションをオーバーライドする機能を備えています。

次のような考慮事項はたくさんあります:メソッドのいずれにも対処したくない場合は、それをNO-OPとして機能させるか、テストに失敗させることができます - 選択の選択 - どちらの方法でもコードはほとんどありません。

クラスを締めると、どのくらいのボイラープレートが得られますか?クラスが最終的な場合、どのように処理しますか?最初にClassPathでスタブを取得するためにトリックをプレイしますか、それとも別のソースを使用していますか?

モックから始めることをお勧めします。

モックの代わりにスタブを使用することには何の問題もありません。

技術的なものを取得したい場合、模擬は「スマート」なオブジェクトであり、期待することができます。スタブは、プリセット値を返すダミーオブジェクトです。見る モックはスタブではありません.

しかし、多くの人々(私自身も含めて)は、模擬での行動テストよりも、スタブで状態テストを行うことを好みます。テスト中のクラスにスタブを注入し、メソッドを呼び出してから、テスト中のクラスの状態を確認します。引数Yを持つ模擬オブジェクトの方法Xと呼ばれるクラスの内部が主張するよりも、脆性テストが少ない傾向があります。

私はあなたが傷ついた世界にいるとは思わない。痛みを感じ始めていない場合は、おそらく孤立/モッキングフレームワークをまだ必要としないでしょう。もしそうなら、手書きのスタブ/偽物を持っていることは何も傷つけません。

多くのインターフェイスがある場合、またはインターフェイスに多くのメソッドがある場合、分離/モッキングフレームワークはハンドコーディングスタブよりも多くの時間を節約できます。

好き Moq 多くの;スタブを作成するためにRhinoの模擬よりも使いやすいと思います。

モックとスタブは、実際の単体テストを実現するために使用されます。すべての依存関係をock笑するだけで、クラスを単独でテストします。

私は現在使用しています Moq モッキングとスタブ用。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top