Fitnesse から seleniumRC を開始する
-
01-07-2019 - |
質問
MSBuild から実行中の Fitnesse テストを TFS 上の夜間ビルドに統合しようとしています。
自己完結型にするために、フィットネスで必要な場合にのみ seleniumRC サーバーを起動したいと考えています。
「コマンドラインフィクスチャ」があることは見たことがありますが、Javaで書かれていますが、それを使用できますか?
解決
できるかもしれないと思います。MSBuild では、次のコマンドを使用して任意のプロセスを簡単に呼び出すことができます。 タスク。ただし、これを行う場合の問題は、exec タスクが Selinium プロセスの完了を待ってから続行することです。これは望ましい動作ではありません。プロセスを実行し、ビルド中は実行し続け、ビルドの終了時にプロセスを破棄したいとします。
したがって、これを行うには、おそらくカスタム MSBuild タスクを作成する必要があると思います。非同期で実行され、制御をビルド スクリプトに戻す誰かが作成したタスクの例については、次の投稿を参照してください。
http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx
MSBuild から Java プログラムを呼び出す例 (ただし、この場合は同期) を呼び出すタスクを見てください。 MSBuild の Ant ここ
http://teamprise.com/products/build/
MSBuild タスクの一部として、作成したプロセス ID を出力プロパティに出力して、ビルド スクリプトの最後にプロセスを強制終了する別のカスタム MSBuild タスクを呼び出すことができるようにする必要があります。これを行うには、MSBuild で変数として渡されたプロセス ID を検索し、呼び出します。 プロセス.キル 方法、つまり
Process process = Process.GetProcessById(ProcessId);
process.Kill();
ただし、ビルドのエラー パスなどにキル タスクが含まれていることを確認することで、キル タスクが常に MSBuild で実行されるように注意する必要があります。おそらく、Selenium RC スターター タスクに他の seleniumRC プロセスを検索させ、新しいプロセスを開始する前にそれらを強制終了することで、物事の回復力をもう少し高めることができます。そうすれば、何らかの理由でプロセスが適切に閉じられなかった場合、そのプロセスは次の時点までしか実行されなくなります。次のビルド。
とにかく、私の答えは大変な作業のように聞こえるので、他の誰かがより簡単な方法を考え出すことを願っています。FitNesse テストのテスト スイートの起動時に seleniumRC プロセスを作成し、スイートの破棄時に強制終了することも、FitNesse ランナー タスクを拡張して、実行前に seleiniumRC を非同期的に起動するカスタム タスクを作成できる場合もあります。テストプロセスを実行し、その後それを強制終了します。
幸運を、
マーティン。
他のヒント
ご返信いただきありがとうございます。
これが私がこれまで行ってきた方法です。
提供されたコマンドライン (私の場合は startSelenium.bat) でプロセスを開始するフィット フィクスチャ (非常に単純) を作成しました。フィクスチャは ProcessID を返すので、それをフィットネス コンテキストに保存し、後でそのセッションを閉じることができます。
これで、フィットネス テストで次のような SuiteSetUp ページを作成できるようになりました。
|RunCommandFixture|
|コマンドライン|コマンドを実行しますか?|
|C:\Projects...\startSeleniumRC.bat|>>seleniumprocess|
そしてこのようなSuiteTearDown
|RunCommandFixture|
| ProcessID | StopCommand?| |
それは私にとってはうまくいきます。フィットネステストからのリクエストにより、セレン RC は開始されません。
ビルド スクリプトによって実行される Process.Start("selenumRC commandline") を実行する単純な .NET アプリを作成するのはどうでしょうか?
Selenium ルートをそれほど進んでいない場合は、同様の .NET ブラウザ自動化ツールを検討することをお勧めします。具体的にはWatiNまたはArtOfTestです。これらの「スタック」は完全に .NET であるため、別のマシン上で実行するのがはるかに簡単です。