実稼働環境で Moles / Pex を使用している人はいますか?
-
20-09-2019 - |
質問
フォーラムを検索しましたが、同様の質問は見つかりませんでした。ベスト プラクティスとして今後どのモック フレームワークを選択するか最終決定を下したいと考えています。Moq を選択することにしました...MS がついに Moles と呼ばれるモック フレームワークを作成したことを最近発見するまでは、プロファイラー API のセクシーさなどを介して TypeMock と同様に動作するようです。
ここには「NMock vs Moq vs TypeMock vs Rhino....」スレッドが 100 万件あります。しかし、モグラが関与しているのを見たことがありません。実際、私は少し前までその存在さえ知りませんでした。使ってる人いる?生産中?古いモック フレームワークをダンプしている人はいますか?もしそうなら、どれをダンプしますか?あなたが使用したモックフレームワークと比較してどうでしたか?
ありがとう..ps、私たちは VS2008 を使用していますが、間もなく 2010 に移行する予定です。
解決
私もあなたと同じ状況にいるので、私の経験についてコメントしたいと思います。
Typemock と Moles はどちらも分離という目標を念頭に置いています。特に厄介なシールされたクラスや非仮想メソッドの場合はそうです。
上で述べたような分離フレームワークは、特に開発の後期段階にある場合や、コードベースをまったくまたはほとんど制御できない場合に必要であると私は考えています。
これらは Typemock の利点ですが、Moles ではまだ発見していません
- コード カバレッジ ツール ( Ncover および Partcover ) のサポート
- プライベート (メソッド/プロパティ) のインターセプト/検証のサポート [はい、これは物議を醸しています]
- より洗練された製品、直感的な API により高速に起動して実行されます (正しく動作させるためにはまだ Moles をいじっています)
Moles が成熟してリリースされる製品になることを願っていますが、Moles をいじり始めたところは他の MS Research プロジェクトと何ら変わらないようです。通常は洗練されていませんが、それがこの種のプロジェクトの性質のようです。
他のヒント
私はモルが次のレベルにモック取っている、それははるかに強力だと思います。
あなたは「生産の」とはどういう意味ですか?。モグラは、ユニットテストでのみ有用です。これは、パフォーマンスに重大な影響を与え、それはまた、(これまでにtrueを返すことのisAuthorized機能を置き換える考えた?)生産に危険なコードができます。
モグラは2008年と2009年の両方で使用可能です。
これは、あなたの質問に答えるホープます。
ほくろは、いくつかの製品チームによってマイクロソフトで内部的に使用されます。
さて、であってもよいし、REPROへの非常に困難な、間にトリミングするように見えるいくつかのスレッドの問題があります。あなたも添付プロセスにブレークポイントを置くしようとすると、それは基本的にVS 2010がクラッシュします。それはちょうど一台のマシン上だけではなく、私のために数回起こるが、後で不明な理由でdissappearedんでした。
回り道はデバッグが難しいかもしれないあなたのコードと迂回間のダンスが最初にアップし対処することであり、偶然にも例外が中に存在する場合、このような、その例外でブレークするだけの難しいます。
生成されたテストやPUTs-そのdiificultが、それはインターフェースではなくクラスに応じて、テスト中のベースのパラメータ化テストを生成しようとするもののとして、彼らはすなわち、符号化パターンを変更する必要があるか、他の何かを伝えようとしているもののメッセージを把握するには、自動、 auuto GENプットが最善の方法を活用パラメータ化テストではないかもしれません。
全体的には、学習曲線があり、プラスフレームワークはまた、成熟するのに時間がかかります。肯定的な側面は、コンセプトは良いですし、maintainceコスト(正しく実装されている場合)とPEXをサポートチームからの応答時間が、時にはあなたはPEXフォーラムに2時間以内に役に立つ答えを得る、本当にポジティブです。
敬具 ヨーゲッシュPawar
モグラとPexがパラダイムシフトです!そのあまりには無料frameowrkから期待します。これまでのところ!!私はあなたがクロステクノロジーのコードベースを持っていない限り、それを使用しないように、何らかの理由に遭遇していないが、限り、それは私モル.NETなどとPexのは間違いなく答えです。
「生産に」あなたは絶対に生産に使用されている製品にそれを使用!
意味であれば私たちは、Googleやマクドナルドなどの企業にとって非常に知名度の高いプロジェクトに私たちのユニットテストでの機能を分離するためにほくろを使用しています。モグラが生産に展開されることはありませんので、もちろん、ユニットテストは、本番サーバー上で実行されていません。