この問題を回避する方法を理解し終えたところです。現在、CruiseControl.netを介してサービスとして実行されているwatinテストがあります。
セキュリティの設定方法により、テストしているWebサイトにアクセスするには、cc.netサービスを特定のユーザーとして実行する必要があります。サービスはドメインユーザーとして実行されているため、[サービスのセキュリティ]タブで[ユーザーにデスクトップとの対話を許可する]チェックボックスが無効になっています。再起動時にプロセスを自動的に開始するため、常にログインしているユーザーからコマンドプロセスを実行するだけでは不十分です。今、私たちは理解しました
これを回避する方法は、最初にnunit-console.exeを呼び出すバッチファイルを作成することでした。nunit-console.exeへのパラメータは、パラメータとしてバッチファイルに渡され、バッチファイルはパラメータを渡します。バッチファイルの2行目で最後の行は、nunit-console.exeから返されたリターンコードを返します。バッチファイルは基本的に次のようになります。
nunit-console.exe %1 %2
exit /b %ERRORLEVEL%
nunit-consoleに渡すパラメータの数は、ニーズに応じて異なる場合があります。
ビルドにnantを使用しているため、nunit-consoleを呼び出す既存のnantタスクを、次のようなcmd.exeを呼び出すexecタスクに置き換えました。
<exec program="cmd.exe" failonerror="true">
<arg value="/interactive" />
<arg value="/c" />
<arg value="[batch file name]" />
<arg value="[parameter one value]" />
<arg value="[parameter two value" />
</exec>
同じタスクがmsbuildでどのように表示されるかはわかりませんが、検索できると確信しています。最終的な結果は、基本的に次のようなコマンドです。
cmd.exe /interactive /c [batch file name] [parameter one value] [parameter two value]
または、nantを使用して、msbuldnantタスクを作成して既存のビルドを呼び出すこともできます。
cmd.exeの「/interactive」パラメーターがキーであり、デスクトップと対話する権限を持つプロセスでバッチファイルを実行します。'/ c'パラメーターが必要な場合、実際にはポジティブではありませんが、そのまま機能しています。まだnunitに結果を同じxmlファイルに記録するように指示しているので、マージタスクを変更する必要はなく、クルーズコントロールへのテスト結果のレポートはうまく機能しています。