-
25-09-2019 - |
質問
にRoy Osherove帳[単体テスト][1]の著書の中で、その単体試験が含まれる必要があ0と1の間の疑似.について質問したところがな主張を模擬しい模擬。らの方法を示して使用アイソレーションの枠組みをスタブに作成したと同様に、疑似.彼が何もないことを示唆数に制限はスタブに作成されます。
私の質問は、この:ではその勧告に適用されるすべての単離の枠組みはすべてC#の枠組み)?つまり、ある枠組みを生成できるだけ疑似なスタブ?がアイソレーションの枠組みとの区別のない疑似からスタブ?
んでも興味のある人はどれほど簡単Osheroveの提言とすることができ符号です。
[1]: http://the システムの下での試験なも試されている全ての代わりに、データから返された疑似がれているのではと考えています。
解決
これらを区別していない部品番号のようなフレームワークがあります。 FakeItEasyはさらに進んで、すべての偽のオブジェクトを呼び出します。
モックはちょうど賢くスタブであるため、はい、彼らは、適用することができます。それは多くの場合、スタブが長いあなたが複数のモックにアサートされませんようとしてモックとして呼び出されることを問題ではありません。言い換えれば、その勧告は、テストごとに1つだけの事を主張についての詳細です。明示的にモックとスタブを区別すること。
重要なことではありません他のヒント
この対応。 stub
は被試験システムから試験出力することができますクラスが(偽のクラスを使用して)である彼の辞書にmock
は、被試験システムに偽の入力を提供するクラスである。
かどうかは、フレームワークは、同様の命名規則は、そのデザイナーまでで使用していますが、標準では(あなたが彼の推薦に同意する場合)は、その唯一のアサートは、テストごとに行われるべきである、と主張は偽のオブジェクトを必要とする場合 - それだけ1つの偽のオブジェクトはテストごとにテストする必要があります。
もちろん、誰もがそうではない、誰もがこの方法それをしない、彼の提案に同意します。
フィリップCalçadoは最近これについて書きました: http://fragmental.tw/2010/12/14/one-mock-per-test-considered-not-awesome/する。一言で言えば、彼はあなたが主な関心事であるべきものから、あなたのテストの迂回にありますどのように多くのモック/スタブに焦点を当てていることを述べている:良い仕様を書く
> can those recommendations
> [a single unit test should contain between 0 and 1 mocks]
> be applied to all isolation frameworks ?
と思い:ほとんどの時間を あり た場合はこの定義
- Unittest=テストの単離(かいUnittest)
- 一Unittestのための一つの特徴
- スタブまたは偽であるオブジェクトを分離がない検証機能
- モックはスタブの追加の機能にもできる検証
ルールのこの種のは、「トレーニングホイール」として見られるべきです。明らかに、多くのスタブとモックを含むテストは、プロットを失ったが、テストごとに1つのアサーションや期待を主張することはあまりにも制限されています。参照Calçadoリンクが指摘するように、どのような重要なの1があることであるの概念のポイントを作るためにいくつかのアサーションや期待を伴う可能性があるテスト、あたり。あなたがすべき最後の事は、このような標準を強制されます。
もう一つは、私たちは本当にここに「期待」、個々の相互作用が、全体ではなくモックオブジェクトの話をする必要があります。実際には、彼らはしばしば同じだが、それは概念をぼかします。
私はC#での私のテストのためにRhinoのモックを使用しています。あなたはそれをモックやスタブを生成することができます。私は、このフレームワークの表情を持っていることをお勧めします: http://www.ayende.com/プロジェクト/サイ-mocks.aspxする