私はMicrosoft Fakesのテストフレームワークを使用しています。シム/モルズアプローチを使用する必要があるので、私は変更できない "レガシー"コードのため、それほど多くの方法はありません。ソースなしのベンダーのコードです。テストなしで書かれています。だから、私は3つの可能なフレームワーク、TypeMock(高価)、TelerikのJustMock(高価な)またはMicrosoftのフェイクスで立ち往生している。既にVS Ultimateがあるので、私たちは偽物を選んでいます。ほとんどの人は、インタフェースや依存性注入の使用をサポートするために何らかの方法でコードを書き直したり修正したりすることを提案する必要があると感じているので、私はあなたに先を教えるでしょう。これはオプションではありません。Microsoft Fakes x64 x86およびv4.5
私が抱えている問題の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があり、Visual Studioで開かれたv4のフレームワークを使用するとv4.5に変更され、うまくコンパイルされています。コンパイル済みの偽のコマンドラインを使用しました。 プロジェクトの.fakesファイルに、コンパイラのバージョンを定義できる属性がありますが、これをv4.5に設定しても機能しませんでした。私は、Visual Studioのバージョンをv4からv4.5に変更したことでアセンブリ参照も変更されたと仮定しています。私の次の試みは、私がそれを見つけることができたらテンプレートプロジェクトを変更しようとすることです。 (それがすでに設定されている場合の謝罪)
を実行して、あなたが存在してもよろしいですfakes.exeの64ビット版? –
はい、私が示したコマンドを使用して手動で実行できます。 32ビットはfakes.x86.exeです。 – Edward
ユニットテストプロジェクトを4.5に設定し、ソリューションを閉じて再オープンすることで、v4.5を動作させることができました。どうして私がビジュアルスタジオを閉じなければならないのか分かりません...残念ながら、それは32/64ビット問題を解決しませんでした。 – Edward