問題タブ [pex-and-moles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
moles - Moles を MsTest で使用すると Moles が「競合」する
Moles と MsTest を使用しているときに、説明可能な (しかし苛立たしい) 動作を見つけました。
次のケースを想像してみてください。
- "Test DLL A" は mscorlib で Moles を使用しています
- "Test DLL B" は mscorlib で Moles を使用しています
コンパイル時間を改善するために、どちらの場合も .moles ファイルを編集して、単一のクラスのモルの生成を要求しています。
これを行うと、プロジェクトは完全に正常にコンパイルされます。
しかし、ソリューションのテストを実行すると、MsTest プロセスは次のようになります。
- 「Out」フォルダー内のすべての DLL をコピーします。
- 「Out」フォルダーでテストを実行します
結果として、"Out" フォルダへのコピーは、mscorlib.Moles.dll の 2 つのバージョン (タイプ 1 とタイプ 2) をコピーしようとし、もちろん、2 つ目は最初のものを上書きします。
そのため、モール アセンブリが正しくないため、"Test DLL A" のテストは失敗します。
もちろん、2 つの簡単な回避策があります。
- すべての .moles ファイルに (すべてのプロジェクトで) 必要なすべての型を含める
- タイプフィルタリングを使用しない
あなたもこの「問題」に直面したことがありますか?他の解決策はありますか?
どうもありがとう !
Pierre-Emmanuel DotNetHub ユーザー グループ リーダー
visual-studio-2010 - AppSettingsReaderにMolesを使用するにはどうすればよいですか?
私はかなり前からユニットテストにMolesフレームワークを使用してきましたが、最近AppSettingsReaderに出くわしましたが、これは「moled」できないようです。その名前空間の他のタイプ((M)AppSettingsSectionを含む)は問題ではないので、ここで何か間違ったことをしているのかどうかわかりません。
手がかりはありますか?
前もって感謝します
G。
code-contracts - Pexがコード契約を満たしていない
私はpexテストを作成しようとしていますが、必要なパラメーターの1つとして常に誤った値をフィードしていることに気付きました。私のテストは次のようになりました(簡略化:パラメータが多い/ありましたが、それ以外は違いはありません):
私は、pexに探索を行わせ、それvalue
が真実であることを確認するシナリオをテストしたかったのです。私は次のような別のテストを行いました:
しかし、私がPexにそれを調査してもらったとき、それはまだfalseに唾を吐き、value
それが生成するテストは「合格」です。要件の後に「Contract.Assert(!value);
別のテストを作成value
し、アサーションに失敗するためにtrueに合格する」という行を追加すると、
問題は、なぜPexがコード契約を満たさないのかということです。
c# - Moles を使用して別のプロセスにメソッドをフックする
Visual Studio でコンパイルされた C# アプリケーションがあります。そのアプリの特定のメソッドへの呼び出しとシリアル化されたメソッド パラメーターをインターセプトしてログに記録したいと考えています。別のプロセスでメソッド呼び出しを傍受することは可能ですか (おそらくアプリ ドメインを使用して?)。に関する記事/チュートリアルはありますか?
つまり、madCodeHook と Detours が win32 で行うのと同様の目標を .NET で達成したいと考えています。
ありがとう
visual-studio-2010 - デリゲートを一度だけ/モルで一度だけ呼び出す方法は?
デリゲートされたメソッドを一度だけ/モルで一度だけ呼び出すことはどのように可能ですか?
メソッド "ResultateGet" を 1 回だけ呼び出したいのは、init がデリゲートなしで初めて非常に複雑になるためです。
私は一般的に、デリゲートではなく元の関数が呼び出される前に、モルデリゲートを1回または特定の回数呼び出す方法に興味があります。
更新: 少し面倒な方法を見つけました。より良い解決策はありますか?
visual-studio-2010 - Visual Studio 2010 Ultimate の Pex と F#
F# プロジェクトで Pex を使用しようとしてきましたが、いくつかの問題に直面しました。
Visual Studio Pex アドインは、複雑なプロジェクトの調査ではなく、30 分間機能しました。
その後、Visual Studio 2010 内から Pex Exploration を実行するたびに、
!warning! [metadata] no explorations found after applying all filters; did you forget a [PexClass] or [PexMethod] attribute?
エラー メッセージが表示されます。探索を行うときに Visual Studio によって実行されるコマンドをコピーして貼り付け、いくつかの属性 (sourceFilter など) を削除してコマンド コンソールから実行すると、生成されたテストがいくつか得られます。ビジュアルスタジオが無効なコマンドを生成する理由は何ですか?しばらくすると、Microsoft.Pex.Framework.dll が .Net 参照リストから消え、ファイル パスを使用して手動で参照するか、参照することさえできなくなり、Pex をアンインストール/再インストールする必要があります。(
A reference to C:\Program Files (x86)\Microsoft Moles\PublicAssemblie\Microsoft.Pex.Framework.dll could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
)
C# プロジェクトで作業している場合、これらの問題はすべて発生しません。
問題 1 2 3 は、アカデミック バージョンで発生しました。
MSDN サブスクライバーで利用可能なバージョンを使用すると、Visual Studio (Visual Studio 2010 Ultimate NO SP1) 内で動作するようになりませんでした。ただし、コマンドプロンプトからは機能しました。このバージョンでは問題 3 に直面しませんでした。
Visual Studio 内で Pex を F# で動作させることができた人はいますか? はいの場合、どうやってそれをしたか教えていただけますか?どのバージョン (VS と Pex) を使用していますか?
visual-studio-2010 - Moles は、クラスの変更後に新しいメソッド シグネチャを表示しません
私が持っていた
ほくろでこのプライベートを使用しました
今、私は方法を次のように変更しました:
しかし、ほくろは私に新しい署名を与えません。Sill MVoo.DooInt32しかし、私はMVoo.DooStringObject を期待しています
ほくろの参照を削除し、きれいにして再構築しました。これまでのところ肯定的な結果はありません。
何か案は?
c# - System.Diagnostics.EventLog の Mole タイプを作成できません
TDD と Moles を使用して、(さらに別の) Windows サービスを構築しています。このプロジェクトにはSystem.Dagnostics.EventLogの拡張機能が含まれており、ログ メッセージに入力パラメーター Exception オブジェクトの詳細が含まれています。例外の詳細と内部例外の詳細がイベント ログに正しく書き込まれていることを確認する必要があります。拡張機能は、最終的に System.Dagnostics.EventLog.WriteEntry を呼び出します。
System.Diagnostics.Moles.MEventLog.WriteEntry に迂回路を挿入したい。ただし、MEventLog は存在しません (SEventLog はありません)。イベント ログの相互作用を分離する方法についてのアイデアはありますか?
moles - System.Environment クラスの Mole を作成できません
単体テストでの動作を置き換えたいのですが、アセンブリのEnvironment.GetFolderPath
モルを生成した後System
、System.Moles
アセンブリに type の定義が含まれていませんMEnvironment
。
visual-studio-2010 - TFS 2010 ラボ管理環境での Microsoft Moles HostType エラー
TFS 2010 SP1 Lab Management と LapDeployTemplate のバリエーションを使用して、SCVMM を介して管理される Hyper-V VM でビルド ワークフローと単体テストを実行しています (codeplex の ALM Rangers Lab Management Guidance doco による)。これらすべてを構成した後、Moles を使用する自動化されたユニット/統合テストに対応するテスト ケースを含むテスト計画を作成しました。私は tcm.exe を使用してこれらのテスト ケースをインポートし、Microsoft Test Manager に取り込みました。
LabDeploy ワークフローを使用して VM でテスト ケースをリモートで実行しようとすると、次のエラーが表示 されます。
通常、Moles がインストールされていないマシンでこのエラーが発生しますが、現在の VM の構成は次のとおりです。
- Windows 2008 サーバー R2
- モル 0.94.51023.0 x64
- VS2010 テスト エージェント\コントローラー x64
- VS2010 ビルド エージェント x64
- VS2010 ラボ エージェント x64
テスト設定ファイルは、既定のホスト タイプを使用し、x64 マシン上の x64 でテストを実行するように設定されています。これは私たちが使用する開発ボックスと同じで、すべてテストを正常に実行します。
Moles とマシン上のテスト エージェントのアンインストール/再インストールを既に試みましたが、役に立ちませんでした。何か案は?他の誰かがこれに遭遇しましたか?