NUnit で Moles を使用しようとしています。「Moles では、インストルメント化されたプロセスであるテストが必要です」を取得

StackOverflow https://stackoverflow.com/questions/3815946

  •  26-09-2019
  •  | 
  •  

質問

NUnit で Moles を使用しようとしていますが、「Moles にはインストルメント化されたプロセスであるテストが必要です」というエラーが表示されます。これを機能させるために、Visual Studio 2008 内で Visual NUnit も使用しています。お手伝いは大歓迎です。

役に立ちましたか?

解決

これは、Moles を NUnit で動作させるために私が行ったことです。

  1. アーカイブを入手してください C:\Program Files (x86)\Microsoft Moles\Documentation\moles.samples.zip そして抽出します Moles ソリューションフォルダー。

  2. を構築します NUnit Visual Studio (2008) のリリース用プロジェクト。

  3. 出力ファイルをコピーする Microsoft.Moles.NUnit.dll そして Microsoft.Moles.NUnit.xml から ...\Moles\NUnit\bin\Release\C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\. 。ダウンロードしてインストールしたものを使用するのではなく、NUnit アドインを再コンパイルするこの手順が実際の解決点だったのではないかと思います。

  4. VS テスト プロジェクトでは、必ずへの参照を追加してください。 C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\Microsoft.Moles.NUnit.dll あなたはただコピーしただけです。

  5. VS テスト クラスで、テスト メソッドを [Moled] 属性 (これには using Microsoft.Moles.Framework.NUnit)。代わりに、その実装を using (MolesContext.Create()) { ... } ブロック (これには using Microsoft.Moles.Framework).

  6. コマンド ラインから、次のように Moles Runner を介して NUnit テスト ランナーを呼び出します。 "C:\Program Files (x86)\Microsoft Moles\bin\moles.runner.exe" "path\to\your\test\assembly.dll" /r:"C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\nunit-console.exe" /x86 /args:"/domain=None"

[Moled]属性を見つけました ではない [TestCase(...)] を使用すると、計測されていないエラーのシナリオに戻ります。代わりに、 using (MolesContext.Create()) その場合でもブロックは機能します。

すべてが機能することがわかったら、Visual Studio 内の外部ツールとして Moles Runner を実行することを検討してください。の指示に従います Visual Studio から NUnit コンソールを使用して Moles を実行する, 、ステップ 6 と同様に引数を更新します。

これは、NUnit 2.5.9、Microsoft Pex および Moles (x86) 0.94.51006.1 を搭載した Windows 7 64 ビット マシン上で行われたことに注意してください。さまざまなパス、バージョンなどの実際のフォルダーを検討してください。

他のヒント

Moles バージョン 0.94.51023.0 を使用しています。

私の知る限り、テストメソッドに以下の属性を追加する必要があります。私は Visual Studio テスト フレームワークを使用していますが、NUnit などと同じかどうかはわかりません。アル。

[HostType("Moles")]

を追加できることも読みました [Moled] 属性はテストメソッドにありましたが、それは私には利用できませんでした。古いドキュメントであると仮定して、その理由については説明しませんでした。Moles には多くのドキュメントがあるようです。

アップデート:Moles Reference Manual の pg.1 に記載されています。26 では、テスト メソッドの MoledAttribute が NUnit を使用する方法です。登録する必要があります Microsoft.Moles.NUnit.dll NUnit にコピーして、NUnit を使用したアセンブリを作成します。 ビン/アドイン フォルダ。

次に、次のように追加します。 [Moled] テストメソッドの属性。

[Test]
[Moled]
public void MyTest() {
  ...
}

それ以外の場合は、次のように using ブロックを追加してテスト メソッドをラップします。

[Test]
public void MyTest() {
  using (MolesContext()) {
  ...
  }
}
[HOSTTYPE(「黒子」)]属性を追加することに加えて、あなたはモルランナーでテストランナーをラップする必要があります。たとえばます:

moles.runner.exe MyAssembly.dll /r:nunit-console.exe
\ Program Files \ Microsoftモグラ\ binにの

モルのランナーは、おそらくの Cに位置しています。使用方法については、実行します:

moles.runner.exe help

superjosが最も正しい答えを持って、あなたは、Visual Studioは、このバッチファイルをNUnitのコンソールランナーを通じてほくろランナーを実行するために取得することができますアドイン「連続テスト」を使用します:

@echo off

rem Uses the Microsoft Moles runner and fires off the NUnit console runner so you can use Moles with NUnit.
rem This batch file is intended to be run from the Continuous Testing plugin in Visual Studio.
rem However, it can be used to run nunit tests from anyhere with Moles as long as the first parameter
rem is the assembly to be tested.  All other parameters are passed to NUnit.

set ASSEMBLY=%1
set MOLESPATH="c:\Program Files\Microsoft Moles\bin\moles.runner.exe"
set NUNITPATH="C:\Program Files\NUnit 2.5.10\bin\net-2.0\nunit-console.exe"
shift

if [%ASSEMBLY%]==[] goto HelpScreen
if [%1]==[] goto RunAlone
if [%2]==[] goto RunParams1 
if [%3]==[] goto RunParams2 
if [%4]==[] goto RunParams3 
if [%5]==[] goto RunParams4 
if [%6]==[] goto RunParams5 
if [%7]==[] goto RunParams6 
if [%8]==[] goto RunParams7 
if [%9]==[] goto RunParams8 
goto RunParams9
:HelpScreen
echo "The parameters are the same as NUnit Console runner with the exception that:
echo "   1) Only one assembly is supported and it must come first"
echo "   2) Only 9 extra parameters may be specified"
echo
%NUNITPATH% /?
exit 1
:RunAlone
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY%
goto ExitRunner
:RunParams1
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1
goto ExitRunner
:RunParams2
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2
goto ExitRunner
:RunParams3
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3
goto ExitRunner
:RunParams4
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4
goto ExitRunner
:RunParams5
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5
goto ExitRunner
:RunParams6
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6
goto ExitRunner
:RunParams7
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7
goto ExitRunner
:RunParams8
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8
goto ExitRunner
:RunParams9
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8 /args:%9
goto ExitRunner
:ExitRunner

ただ、ソフトウェアパッケージのバージョンにパスを更新。また、これは、あなたがそれを更新する時間があれば、他のプログラムから実行するために使用することができます。

あなたは、Visual Studio内からNUnitのとMSほくろを実行することはできません。あなたはどちらかそれを行うにはMSTestを(Visual Studioのユニットテスト)を使用しなければならないか、コマンドline.Seeからモグラと<のhref = "http://research.microsoft.com/en-us/projectsをごNUnitのテストを実行することができます/pex/molesmanual.docx」のrel = "nofollowを">リファレンスマニュアルを。

の可能な選択肢:それはあなたのニーズに合った場合は、すべての種類を実行するためにガッリオの自動化プラットフォームを使用することができますテストフレームワーク(あなたのケースではNUnitのMSTestをして)並んで...

HTH! トーマス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top