2013-02-19 25 views
6

私は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に変更したことでアセンブリ参照も変更されたと仮定しています。私の次の試みは、私がそれを見つけることができたらテンプレートプロジェクトを変更しようとすることです。 (それがすでに設定されている場合の謝罪)

+0

を実行して、あなたが存在してもよろしいですfakes.exeの64ビット版? –

+0

はい、私が示したコマンドを使用して手動で実行できます。 32ビットはfakes.x86.exeです。 – Edward

+0

ユニットテストプロジェクトを4.5に設定し、ソリューションを閉じて再オープンすることで、v4.5を動作させることができました。どうして私がビジュアルスタジオを閉じなければならないのか分かりません...残念ながら、それは32/64ビット問題を解決しませんでした。 – Edward

答えて

1

のみ、以下を考えることができます:

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

+0

既に設定されています。試したx64と任意のCPU。変わりはない。 – Edward

+0

プロジェクトのアーキテクチャを変更しても差はありません。テスト設定を試してみましたが、変更はありません。 – Edward

0

残念ながら、私はfakes.x86.exeの代わりにfakes.exeを実行するVisual Studioを取得する方法を見つけることができませんでした。 fakes.exeをfakes.x86.exeにコピーする以外は、しかし、マイクロソフトが偽物を使用してスピードを上げるために作成した提案の1つは、作成した偽のdllを参照し、必要な参照がテストプロジェクトに含まれていることを確認することでした。既定ではMicrosoft.VisualStudio.QualityTools.UnitTestFrameworkと表示されます。これにより、私は偽のライブラリを生成する必要がなくなり、偽のライブラリを生成する必要がなくなります。私の好きな解決策ではありませんが、速度に有利です。だから私はその道を行く。

この問題のお手伝いをいただいたおかげです。

4.5バージョンをコンパイルすることを要約...ユニットテストプロジェクトのファミリバージョンが4.5であることを確認し、4.0から変更する場合は、ビジュアルスタジオを閉じて再度開いてください。

+2

"作成された偽のdllを参照し、必要な参照がテストプロジェクトにあることを確認する"方法を説明するドキュメントはありますか? – schellack

4

@schellack - ここで私は、「作成した偽物のDLLを参照し、必要な参照があなたのテストプロジェクトであることを確認してください」

  1. コンパイルをし、局部的にすべてのユニットテストを実行し、彼らは合格を確認することができた方法です
  2. .csprojファイルと同じ場所にあるプロジェクトのメインディレクトリには、 "FakesAssemblies"というディレクトリがあります。ディレクトリには、生成されたSystem.Web.Mvc.4.0.0.0.Fakes.dll(または使用しているバージョン番号)が表示されます。 System.Web.Mvc.4.0.0.0.Fakesへのプロジェクト参照には、このディレクトリとdllへのヒントパスがすでにあります。 このディレクトリとdllの両方をソース管理に追加する必要があります。 VSに追加する必要はありません。
  3. CIビルドマシンをコンパイルするために、Microsoft.QualityTools.Testing.Fakes.dllをプロジェクトに追加する必要がありました。
    1. は、私はCでMicrosoft.QualityTools.Testing.Fakes.dllが見つかりました:\プログラムファイル、プロジェクトのメインディレクトリには、マイクロソフトのVisual Studio 11.0 \ Common7 \ IDE \ PublicAssemblies
    2. 、同じ場所\(x86の)。 csprojファイルには、プロジェクトに含まれる「Fakes」ディレクトリ(VSで表示)とソース管理下にあります。それには1つの.fakesファイルがあります。 Microsoft.QualityTools.Testing.Fakes.dllをVSを介してこのディレクトリにコピーして、プロジェクトにも追加しました。
    3. プロジェクトの.csprojファイルのヒントパスを追加/更新してFakesディレクトリを調べる必要があります。私は私の.csprojファイル内の参照を発見し、このように見えるためにそれを変更:

<Reference Include="Microsoft.QualityTools.Testing.Fakes, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
    <HintPath>Fakes\Microsoft.QualityTools.Testing.Fakes.dll</HintPath> 
</Reference> 

今、すべてがコンパイルされ、ユニットテストは

関連する問題