問題タブ [microsoft-fakes]
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.
unit-testing - Moles から Fakes に切り替えた後、VS2012 で任意の単体テストが失敗する
VS2010 で最初に開始したソリューションの一部であるアセンブリに対して、約 300 の単体テストがあります。多くのテストで Micrsoft が提供する Moles フレームワークを使用していましたが、VS2012 (Update 2) にアップグレードした後、公式に提供された Fakes フレームワークを使用するようにテストを変更したいと考えました。
それに応じて、対応するテストを更新しました。これには通常ShimsContext
、コードの作成といくつかの小さな変更のみが含まれます。
前
後
私のテストプロジェクトにはさまざまなテストクラスがあり、テストを実行すると、説明できない任意のエラーが発生します。
- リリース モードで 1 つのクラスのテストを実行 => 21 件のテストが失敗し、15 件が合格
- デバッグ モードで同じクラスのテストを実行 => 2 つのテストが失敗 / 34 が合格
- リリース モードで同じクラスのテストを再度実行 => 2 つのテストが失敗 / 34 が合格
- プロジェクト内のすべてのテストを実行 => 21 件のテストが失敗 / 15 件が合格 (上記のクラスの場合)
彼のシステムの同僚に対する同じ動作。エラーメッセージは常に次TypeLoadException
のようなものです
テスト メソッド ... 例外がスローされました: System.TypeLoadException: アセンブリ 'System.DirectoryServices.4.0.0.0.Fakes、Version=4.0.0.0、Culture=neutral、PublicKeyToken で型 'System.DirectoryServices.Fakes.ShimDirectorySearcher' を読み込めませんでした=...」
VS2012 自体では、ソース コード エディターにエラーは表示されず、Intellisense は期待どおりに動作し、たとえば ShimDirectorySearcher 上のマウス ツールチップは、それがどこにあるかを示します。 0.0.Fakes.dll) を .NET Reflector で使用すると、エラー メッセージに示されている型が存在します。
VS2010 から VS2012 に切り替える前は、すべてのテストが (デバッグ モードとリリース モードでも) 正常に機能していましたが、何が問題なのかわかりません。上記のように結果が変わるのはなぜですか? 型が存在するにもかかわらず TypeLoadExceptions が発生するのはなぜですか?
残念ながら、Microsoft やインターネットから利用できるヘルプはほとんどありません。
c# - アセンブリにフェイクを追加すると、エラー メッセージが表示されずに失敗する
Web サービスと通信するコネクタ アセンブリの単体テストをセットアップしようとしています。私は提供された例に従っていました:
ただし、コネクタ アセンブリにフェイクを追加すると、プロジェクトのビルドに失敗し、エラーは報告されません。そこで、フェイク ファイルを変更して診断をオンにし、ノイズの多い冗長性を使用しましたが、エラー メッセージは表示されませんでした。次に、偽のファイルでスタブとシムの両方の生成を無効にしましたが、それでもビルドに失敗しました。
コネクタ アセンブリのフェイクを削除すると、ビルドされます。偽物を追加すると、プロジェクトがビルドされません。エラーメッセージが表示されないため、これを機能させる方法がわかりません。
どんな助けでも大歓迎です。
c# - Microsoft Fakes を使ってモックする
モックする必要がある async(.net 4.5) メソッドでクラスを封印しました。私は Microsoft Fakes を使用しているため、それらは「シム」になります。次のコードは、私がしなければならないことの例です。ビルドされますが、実行時に「Login」コントローラー メソッド内の「LoginAsync」メソッドが呼び出されると、テストがハングします。
c# - System.ServiceModel.Channels.Message?
Visual Studio で MS Fakes を初めて使用します。
を偽造する方法の例を教えてくれる人はいSystem.ServiceModel.Channels.Message
ますか?
の戻り値を制御したい
と
これは MS Fakes で可能ですか? MOQ を true にしましたが、MessageProperties
クラスが封印されているため、機能しません。
c# - Microsoft Shim と WCF サービス
この例に従って、シムを活用して、単体テストを実行しているメソッドから呼び出される WCF サービス呼び出しの外部依存関係を削除しようとしています。例とは異なり、次のようなコードを使用して、WCF クライアントをオンザフライで生成します。
CreateChannel メソッドによって返されたプロキシをシム処理するために、その例をどのように適応させるのですか? ShimWCFService クラスでは、次のようなものを追加する必要があると想定しています....
<TService>
ただし、戻り値としてその shim にのモック オブジェクトを関連付ける方法がわかりません。
web-services - Web サービスの単体テストに Microsoft Fakes を使用する方法は?
私は 3 層アーキテクチャを持つプロジェクトに取り組んでいます:- 1. ビジネス層 2. データ層 3. サービス層
サービス層を単体テストしたい。
現在、データ層を偽造することで、ビジネス層に単体テストを追加することに成功しています。
問題は、ビジネス層を呼び出すサービス層があり、それがデータ層を呼び出すことです。
合格した最初のテスト ケースは、単体テスト プロジェクトにビジネス レイヤー プロジェクトの参照を追加し、データ レイヤーの Fakes を作成することで作成されました。
今私がやりたいことは、ユニットテストプロジェクトにサービスの参照を追加し、同時にMicrosoft Fakesを使用することでこれを達成したいということです。
誰かがこれを理解するのを手伝ってくれますか? 私はこの Fakes フレームワークを初めて使用します。
visual-studio-2012 - Microsoft Fakes & TFS 2012 Visual Studio Test Runner - 単体テストが散発的に失敗する
環境
- Visual Studio 2012 プレミアム更新プログラム 3
- Team Foundation Server 2012 Update 3
- 編集:.NET Framework 4
- DefaultTemplate (DefaultTemplate.11.1.xaml)
- Visual Studio テスト ランナー
- 対象プラットフォーム: X86
- Visual Studio テスト ランナー
問題
2 つの単体テスト アセンブリがあります。
- 拡張テスト
- ユーザーテスト
どちらもMicrosoft Fakes Frameworkを使用します (スタブとシムを使用)。
ユニット テストをローカルで実行すると問題なく動作します(ビルド サーバーにインストールされた Visual Studio でも、4 台の異なるマシンでテストされます)。ただし、ビルド エージェントを使用してビルドすると、一部のユニット テストが例外で失敗します。
またはシムについても同じ:
興味深いのは、散発的に失敗することです。ちょっとした統計を作成しようとしました。
上記の変更以外に、誰もソース コードを変更していないことに注意してください。
すべてのビルドは、詳細なログ レベルを使用して作成されました。シム診断="true";
明示的に必要なシム/スタブのみが .fakes-file に含まれています (それ以外の場合、MSBUILD は終了コード 1 を使用して失敗していました)。
おそらく誰かがすでに同じ問題を経験しているか、誰かがヒントを持っています。
前もって感謝します
unit-testing - Microsoft Fakes と静的でジェネリックなメソッドによるシミング
単体テスト用に静的ジェネリック メソッドをシムする必要があります。ただし、Fakes に shim オブジェクトを作成させることはできないようです。これを達成する方法を知っている人はいますか?
特に、Newtonsoft の JsonConvert.DeserializeObject<>() をシムしたい
c# - シム・ア・ボイド・メソッド
次の(レガシー、前任者から継承)VB.Net(フレームワーク2.0)のクラスとメソッドがあり、例外でシステムイベントログを作成します。
これを C# (フレームワーク 4.5) 単体テスト プロジェクトでテストしようとしていますが、ロジックの一部ではaValue
、コンマで区切られた 2 つの数字が必要です。そうでない場合は、例外とイベント ログがスローされます。
例外が正しくスローされることを確認するために、次の単体テストを設定しました。
MyMethod
ロジックが予想される例外を引き起こすため、これはすべてうまく機能し、テストに合格します。ただし、イベント ログは書き込まないようにします。MyUtitlityClass
では、呼び出しを傍受して代わりに何もしないように Shim するにはどうすればよいでしょうか。LogError
私が見た Fakes の例はすべて、偽の値を返すメソッドに関するものです (そして、すべてC# で記述されています!) そのようなパターンを実装しようとすると、LogError に getter がないというエラーが発生します。