2012-03-08 4 views
2

私たちはモールを使ってレガシーコードをテストしています。現在、すべてのユニットテストは、MSTestまたはResharperのテストランナーを使用してローカルで実行されます。しかし、ビルドサーバー(MSBuildとMSTestを使用して、わずかに変更されたTFS 2010ワークフローを使用しています)では、すべてのMolesテストは失敗します。私のビルドサーバーでは、スタブを取得するだけで、モールではありません

ビルドサーバーで.Moles.dllが生成されたときにスタブ( "S"が付いたクラス)のみが作成されたが、Molesクラス( " M ")。

私たちのコードがまだコンパイルされているのは、私たちの開発者の一人がMolesのフレームワークを作成して構文を簡素化しています。フレームワークはReflectionを使用してメソッドのMolesバージョンを取得しますが、Assembly.GetTypeを呼び出すとnullが返されるため、メソッドを取得しようとするとNullReferenceExceptionがスローされます。

編集:最新バージョンのPex & Molesライブラリがビルドサーバーにインストールされています。

EDIT 2:ここではMSBuildのログイン

"C:\Program Files (x86)\Microsoft Moles\bin\moles.exe" @"D:\Builds\4\DeltaNet\Run All Unit Tests\Sources\DeltaNet\src\DeltaNetTests\obj\Debug\Moles\moles.args" 

にあるコマンドラインと "moles.args" だから

Common.Logging.moles;DeltaNetUtils.moles;System.configuration.moles /molesfilesonly /referenceassemblies:"<lots-of-dll-files>" /cachepath:"C:\Program Files (x86)\Microsoft Moles\bin\..\MolesAssemblies" /intermediatepath:"D:\Builds\4\DeltaNet\Run All Unit Tests\Sources\DeltaNet\src\DeltaNetTests\obj\Debug\Moles" /outputpath:"D:\Builds\4\DeltaNet\Run All Unit Tests\Sources\DeltaNet\src\DeltaNetTests\MolesAssemblies" /clrversion:v4.0.30319 /targetframeworkversion:v4.0 
+0

Molesのインストール時にMプレフィックスクラスが構築されていません。たぶんあなたはTFSビルドサーバーにインストールする必要があります –

+0

それはインストールされているだけでなく、私は私たちのクラスのMolesバージョンについては標準の.netクラスではないと話しています –

+0

私はまだTFS BuildサーバーにMolesを統合していませんフレームワークを評価しています)、Molesアセンブリ生成はビルドプロセスに統合されていないようです。私は、xxx.Molesを生成することは、ソリューションを右クリックして.mole生成を再実行することによって実行される手動のステップだと思います。プロジェクトに含まれていないMolesAssemblyフォルダがあります。そのため、TFSにチェックインしないと実行時に使用できなくなります。ソリューション/プロジェクトビルドでxxxx.Molesアセンブリの参照が見つからないというTFSビルドに関する警告が表示されますか? –

答えて

0

の内容ですが、私はこの今日をもう一度見ていました私は問題を思いついたと思うし、それはうつ病のように単純でした。

私は2つの異なるテストプロジェクトでモルを使用していましたが、そのうちの1つでは、どのクラスを正確に指定したのですか?assembly.moles xmlファイルを使用するためにモルを欲しかったのです。これは私のテストの大部分のものの後にコンパイルされているはずなので、バイナリディレクトリにそれを上書きします。

私はそのファイルから特定のものを削除しましたが、私のテストが合格し、MXXXタイプが作成されているように見えます。

関連する問題