6

Microsoft Fakes テスト フレームワークを使用しています。変更できない「レガシー」コードのためにシム/モルアプローチを使用する必要があるため、これを回避する方法はあまりありません。ソースのないベンダーのコードであり、テストを考慮せずに書かれています。だから私は、TypeMock (高価)、Telerik の JustMock (高価)、または Microsoft の Fakes の 3 つの可能なフレームワークで立ち往生しています。VS Ultimate は既にあるので、偽物を選択します。ほとんどの人は、インターフェイスや依存性注入の使用をサポートするために何らかの方法でコードを書き直したり変更したりすることを提案する必要があると感じているため、前もってお伝えしますが、これはオプションではありません。

私が抱えている問題の 1 つは、偽造しようとしているライブラリが巨大であり、32 ビット (fakes.x86.exe) ではなく 64 ビット バージョンの fakes.exe を使用する必要があることです。 32 ビット アプリのメモリ制限。

2 つ目の問題は、v4.5 フレームワークを使用してフェイク ライブラリをコンパイルする必要があることです。文書化されていませんが、コマンドラインから可能です。その理由は、v4.5 で System.Collections.Generic に IReadOnly* インターフェイスが追加され、ライブラリがそれらを使用するためです。v4 でコンパイルすると、予想どおり、型が見つからないことを示すエラーがスローされます。

問題は、Visual Studio が常に x86 バージョンと v4.0 フレームワークを使用していて、それをオーバーライドする方法が見つからないことです。64ビットとv4.5フレームワークを使用する方法を知っている人はいますか? 私の現在の考えは、ビジュアルスタジオの組み込みのものを使用せず、コマンドラインを使用してファイルを手動で参照することです。次に、dll を更新するたびに、手動で再作成し、参照を更新します。このファイルは頻繁に更新されるわけではないため、更新される可能性があります。

フェイク ライブラリを手動で生成するために使用するコマンド ラインは次のとおりです (誰かがこれを便利だと思うかもしれません)。

"c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\fakes\fakes.exe" <assembly> /tfv:v4.5

help コマンドは、v2、v3.5、および v4 が tfv の可能なオプションであることを示しているだけですが、キックのために v4.5 を試しました。

アプリのアーキテクチャをCPUではなくx64に強制しようとしましたが、実行されたfakes.exeに変更はありません。テストのために .csproj ファイルを調べましたが、変更はありません。.csproj ファイルを調べたところ、fakes.exe が表示され、v4.5 に変更されたフレームワークを使用するように指示され、Visual Studio で開かれ、正常にコンパイルされました。正常にコンパイルされた、fakes コマンド ラインを使用しました。プロジェクトの .fakes ファイルには、コンパイラのバージョンを定義できる属性がありますが、v4.5 に設定しても機能しませんでした。Visual Studio の v4 から v4.5 へのバージョン変更により、アセンブリ参照も変更されたと想定しています。私の次の試みは、テンプレート プロジェクトが見つかったら、それを変更してみることです。

4

3 に答える 3

1

次のことしか考えられません(すでに設定されている場合は申し訳ありません):

「テスト」 --> 「テスト設定」 --> 「デフォルト プロセッサ アーキテクチャ」 --> 「X64」

于 2013-02-19T23:17:22.090 に答える
0

残念ながら、Visual Studio で fakes.x86.exe の代わりに fakes.exe を実行する方法がわかりませんでした。fakes.x86.exe に fakes.exe をコピーする以外。いろいろ調べているうちに、偽物を使用して速度を上げることについて Microsoft が行った 1 つの提案は、作成された偽物の dll を参照し、必要な参照がテスト プロジェクトにあることを確認することでした。デフォルトでは、Microsoft.VisualStudio.QualityTools.UnitTestFramework のように見えます。これを行うと、フェイクを使用できるようになるだけでなく、フェイク ライブラリを生成する必要がなくなるため、ビルド時間も短縮されます。私のお気に入りのソリューションではありませんが、速度の面で利点があります。だからその道を行く。

この問題に協力してくれた人々に感謝します。

コンパイルする 4.5 バージョンの取得について要約します...単体テスト プロジェクトのフレームワーク バージョンが 4.5 であることを確認し、4.0 から変更する場合は、ビジュアル スタジオを閉じて再度開きます。

于 2013-02-20T22:45:34.287 に答える