NUnit で Moles を使用しようとしています。「Moles では、インストルメント化されたプロセスであるテストが必要です」を取得
質問
NUnit で Moles を使用しようとしていますが、「Moles にはインストルメント化されたプロセスであるテストが必要です」というエラーが表示されます。これを機能させるために、Visual Studio 2008 内で Visual NUnit も使用しています。お手伝いは大歓迎です。
解決
これは、Moles を NUnit で動作させるために私が行ったことです。
アーカイブを入手してください
C:\Program Files (x86)\Microsoft Moles\Documentation\moles.samples.zip
そして抽出しますMoles
ソリューションフォルダー。を構築します
NUnit
Visual Studio (2008) のリリース用プロジェクト。出力ファイルをコピーする
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 アドインを再コンパイルするこの手順が実際の解決点だったのではないかと思います。VS テスト プロジェクトでは、必ずへの参照を追加してください。
C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\Microsoft.Moles.NUnit.dll
あなたはただコピーしただけです。VS テスト クラスで、テスト メソッドを
[Moled]
属性 (これにはusing Microsoft.Moles.Framework.NUnit
)。代わりに、その実装をusing (MolesContext.Create()) { ... }
ブロック (これにはusing Microsoft.Moles.Framework
).コマンド ラインから、次のように 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! トーマス