26

新しいプロジェクトにモックフレームワークを選択する必要があります。

それらのフレームワークの長所と短所は何ですか?比較表はありますか?

JustMockがベータステージであることは知っていますが、今は非常に見栄えがします(TypeMockと非常によく似ています)

編集:私はMSモールはどうですか?

4

6 に答える 6

22

JustMockが登場する前に、この質問があり、答えはここにあります。非常に優れたモックフレームワークの比較があります。JustMockはまだありませんが、各.NETモックフレームワークの構文と機能を確認できます。

RhinoMocks(およびMoq)はどちらもオープンソースであり、型を継承することで偽のオブジェクトを作成できるプロジェクトを自由に使用できます。つまり、静的メソッド、構造体、および封印されたクラスを偽造することはできません。

Typemock Isolatorは、CLRプロファイラーを使用して.NET呼び出しをインターセプトし、実行時にそれらを変更し、事実上何でも偽造できます。Typemockは、製品コード内でインスタンス化されるため、テストから「到達」できないオブジェクトを偽造することもできます。それを「黒魔術」と呼ぶ人もいますが、サードパーティのライブラリやレガシーコードなど、事実上何でも偽造できる機能は必須だと考える人もいます。

JustMockは新しいプレーヤーであり、現在ベータ版のみです。TypemockIsolatorがいくつかあり、プロファイラーAPIなしで実行できます。このモードでは、RhinoMocksと同じです。TypemockIsolatorの機能が実際にどれだけあるかはまだわかっていません。今のところ、それは正しい方向への良いスタートのようですが、それが有効なオプションになる前に、まだいくらかの距離があります。

于 2010-04-14T13:45:29.903 に答える
14

最近、RhinoMocksからMoq切り替えました。

どちらも同様の機能を備えていますが、MoqのAPIははるかにクリーンです

于 2010-04-14T14:23:46.200 に答える
12

[免責事項-私はTelerikで働いています]

JustMockについてのほんの少しのポイント。そのAPIはRhinoMocksよりもMoqのAPIに似ているため、Moqに精通している場合は、JustMockの学習に問題はありません。JustMockでより良いことをしようとしたのは、たとえば、順次呼び出しをモックするときに、より良いストーリーを作成することです。さらに、すでに述べたように、JustMockを使用すると、静的クラスとメソッド/プロパティ、封印されたクラス、非仮想メソッドとプロパティなどを、同じMoqのような構文を使用してモックできます。また、JustMockのこれのおかげで、部分的なモックを行うことができます。

ところで、Drorが言及した「黒魔術」は、Telerik.CodeWeaver.Hookアセンブリを直接参照する場合、JustMockを使用するときにも可能ですが、残念ながら、現時点では文書化されていません。誰かがそれをしたい場合は、彼はサポートチケットを開くことができ、私たちは喜んでお手伝いします。

お役に立てれば。

于 2010-04-14T14:43:45.817 に答える
8

また、.NETメソッドをカスタムデリゲートに置き換えることができる.NETの分離フレームワークであるMicrosoftMolesもチェックしてください。

Molesには、商用プロジェクトに使用できるバージョンがあり、VisualStudio2008および2010でサポートされています。

于 2010-04-14T16:36:39.060 に答える
2

https://stackoverflow.com/questions/37359/what-c​​-mocking-framework-to-use /2608634#2608634も参照してください

私は現在Moqでユニットテストを行っていますが、かなりうまく機能していると言わざるを得ません。-言い換えると、うまくいきます!私はあなたが言及した他のモックフレームワークを使用したことがないので、比較することはできません。しかし、最初に試すモックフレームワークとしてMoqを選んだことをうれしく思います。lamda式は本当に素晴らしく、非常に軽量で読みやすいです(他のほとんどのモックフレームワークの記録/再生構文は、読みやすさをあまり良くしていません)

それに加えて(これは少し話題から外れています)、近い将来、IoC ContainerとしてNinjectを使用する予定であり、両方のフレームワークが連携しています。NinjectにはLamdaもあり、Moqの自動モックコンテナサポートも提供します(拡張機能を使用)。したがって、IoCコンテナの使用も計画している場合は、この素晴らしい組み合わせを確認できます:]

于 2010-04-14T14:24:10.387 に答える
1

それぞれに長所と短所があるため、どちらが最適かはわかりません。私はいつもRhinoMocksを使用していました。それは無料で、周りに素晴らしいコミュニティがあり、助けを見つけるのが簡単だからです。

TypeMockは無料ではありません(私は推測します)。ただし、TypeMockは、たとえば、メンバーのプライベートタイプまたは静的タイプを使用してレガシーコードをテストする場合に最適です。他のモックフレームワークはそれを行うことができません。欠点は、テスト可能なコードを作成する必要がないことです。これには、テストのしやすさだけでなく、他の利点もあります。

私はJustMockを知らないので、それがどのように機能するかをあなたに伝えることはできません。

それらをすべて試して、快適に感じるものを1つ選ぶことをお勧めします。ただし、レガシーコードをテストする必要がある場合は、TypeMockよりも選択してください。

他の人があなたにもっと詳細を教えてくれることを願っています。

于 2010-04-14T12:14:58.590 に答える